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

时间:2017-02-03 20:12:38

标签: scala sbt maven-bom

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

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

我可以使用它来管理AWS开发工具包中的依赖项版本。在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>

然后,当我想使用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>

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

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'
}

SBT是否有类似的插件?

3 个答案:

答案 0 :(得分:2)

我正在寻找相同的商品,并且在很多地方都进行过搜索。

我发现最有趣的是,看起来SBT项目上有Open Ticket:

https://github.com/sbt/sbt/issues/4531

等不及要解决!

答案 1 :(得分:0)

你有没有尝试过使用常春藤?它允许您指定&#34;获取最新的&#34;使用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>

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

答案 2 :(得分:0)

如果我对您的理解正确,可以将其添加到libraryDependencies:

"com.amazonaws" % "aws-java-sdk-bom" % "1.11.800" pomOnly()

您仍然必须将该版本号放入变量中,并与您实际需要的SDK一起使用,除非有人知道在修订版字段中使用的正确方法。我知道如果您想要最新的发行版本,可以latest.release