2017-02-03 21 views
2

我想使用外部BOM來管理SBT中項目的依賴項版本。如何使用maven BOM(物料清單)來管理SBT中的依賴關係?

例如,AWS Java SDK的發佈清單(BOM)材料神器自己的Maven倉庫:https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/1.11.86

我可以用它來管理AWS SDK依賴的版本。當我想使用全身都是的BOM模塊,我可以忽略版本

<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將解決這個問題對我來說:在Maven中,我可以通過添加BOM到我的<dependencyManagement>段像這樣做:

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

同樣的搖籃,我可以用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' 
} 

是否有simila r插件SBT?

+0

嗨,你有使用內聯常春藤XML工作的SBT? – saurabheights

回答

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> 

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

+0

我不一定試圖獲得最新版本,我試圖獲得與該版本BOM兼容的版本。 BOM的想法是它告訴你什麼版本的依賴關係能很好地結合在一起。採取最新的並不一定會做到這一點。 – kiiadi

+0

您可以在名爲ivysettings.xml的文件中設置屬性(例如slf4j.version.numer = 2.1.3)。然後在ivy.xml中使用符號版本#。請參閱http://ant.apache.org/ivy/history/2.4.0-rc1/tutorial/defaultconf.html,http://ant.apache.org/ivy/history/2.4.0-rc1/tutorial/multiproject .html – radumanolescu

+0

所以我必須手動(即:在我的sbt版本中的scala代碼中)下載我想要的BOM文件,然後以編程方式設置項目的不同版本屬性?這意味着我必須自己管理依賴鏈...... – kiiadi