2010-05-19 37 views
3

想象兩個項目。第一個是framework-core項目,版本號爲1.1.0,並且有幾個快照構建。另一種是example-business項目,對集結迭代次數9如果依賴項是唯一的快照版本並且調用了安裝,maven會選擇什麼?

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>framework-core</artifactId> 
    <version>1.1.0-20100518.134928-9</version> 
</dependency> 

如果mvn install是呼籲framework-core會發生什麼情況下面依賴性framework-core?我發現該工件被複制到該文件夾​​,並命名爲*.1.1.0-SNAPSHOT.jar(如預期的那樣)。

這引導我假定這個版本只在這個版本被定義爲依賴關係而不是精確構建時才被使用。

要測試本地的東西而不將其部署到Maven存儲庫:調用mvn install,將依賴關係更改爲1.1.0-SNAPSHOT - 並且使用剛剛安裝的工件?或者是否可以覆蓋特定版本(使用install生命週期階段)?

回答

6

當使用帶時間戳版本-SNAPSHOT的依賴 - 在這種情況下,像-20100518.134928-9 - 你鎖定版本,並明確地告訴Maven來使用這個版本。即使構建了新的-SNAPSHOT,依賴關係也不會更新,這就是「鎖定的快照」的要點。

如果你想使用最新-SNAPSHOT,宣佈對-SNAPSHOT版本的依賴解鎖依賴性:

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>framework-core</artifactId> 
    <version>1.1.0-SNAPSHOT</version> 
</dependency> 

手動更改它不是什麼大不了的事,但Versions Maven plugin以下的目標可能有助於在某些情況下:

  • versions:lock-snapshots搜索的POM,所有-SNAPSHOT 版本,並取代它們與 該當前時間戳版本 -SNAPSHOT,例如, -20090327.172306-4
  • versions:unlock-snapshots在pom中搜索所有時間戳 鎖定的快照版本並用-SNAPSHOT替換 。 版本:解鎖快照
+0

再次感謝您的解釋。即使maven-version-plugin的目標也會有所幫助!謝謝 – codevour 2010-05-20 06:40:46