如何使用maven BOM(物料清单)来管理SBT中的依赖项?

kii*_*adi 7 scala sbt maven-bom

我想使用外部BOM来管理SBT中项目的依赖项版本.

例如,AWS Java SDK将材料清单工件发布到其maven存储库:https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/1.11.86

我可以使用它来管理AWS SDK中的依赖项版本.在Maven中我可以通过将BOM添加到我的<dependencyManagement>部分来实现这一点:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-bom</artifactId>
      <version>1.11.86</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

然后,当我想使用BOM中涵盖的模块时,我可以省略版本,BOM将为我解决它:

<dependencies>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
  </dependency>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-sns</artifactId>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

同样在Gradle中,我可以使用BOM来为我使用此插件管理依赖项,如下所示:

apply plugin: "io.spring.dependency-management"

dependencyManagement {
    imports {
        mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.86'
    }
}

dependencies {
    compile 'com.amazonaws:aws-java-sdk-sns'
    compile 'com.amazonaws:aws-java-sdk-s3'
}
Run Code Online (Sandbox Code Playgroud)

是否有类似的SBT插件?

rad*_*scu 0

你尝试过将 Ivy 与 sbt 一起使用吗?它允许您通过使用指定“获取最新”rev="+"

<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven" xmlns:e="http://ant.apache.org/ivy/extras">
    <dependencies>
        <dependency org="com.amazonaws" name="aws-java-sdk-s3" rev="+" conf="compile->compile(*),master(*);runtime->runtime(*)" />
    </dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)

请参阅http://www.scala-sbt.org/1.0/docs/Library-Dependency.html

  • 我不一定要尝试获取最新版本,我只是尝试获取与该版本的 BOM 兼容的版本。BOM 的想法是,它告诉您依赖项的哪些版本可以很好地协同工作。采取最新的不一定能做到这一点。 (2认同)