2013-02-22 275 views
1

我正在嘗試爲我們的項目定義發佈過程。如何在使用maven時自動更新SNAPSHOT依賴關係到最新發布的版本

我能夠使用Maven發佈插件來完成發佈,但是我必須手動更新所有內部SNAPSHOT依賴項才能在準備之前發佈版本,然後在發佈之後再次返回到SNAPSHOT版本。

我使用了maven版本插件,它檢測到我的公司依賴項是SNAPSHOT構建並列出了要使用的正確版本構建。

我試過maven發佈插件,準備目標,並抱怨我的依賴中的SNAPSHOT版本。

有沒有辦法做一個發佈,更新SNAPSHOT depenedencies最新發布的版本,然後發佈後發回SNAPSHOT版本?或者,也許這不是你應該使用maven發佈和SNAPSHOTS的方式。

回答

1

當您使用maven創建釋放時:它必須是確定的。即一旦它被創建,它就不能再改變(即,源不能改變,並且依賴關係不能改變)。

所以,當你創建一個moduleA和moduleA的發行版時,它依賴於moduleB。 moduleB必須在moduleA發佈之前釋放,並且moduleA必須依賴於moduleB的發佈版本。

一個重要的是你不應該回到SNAPSHOT版本。至少我的理解它的意思:

  • 創建moduleB-1.0.0版本
  • 變化的依賴於moduleB-1.0.0
  • 創建模塊A- 1.0.0版本
  • 然後改變依賴回到moduleB-1.0.0-SNAPSHOT

必須清楚的是,一旦moduleB-1.0.0存在(即釋放):工件模塊B-1.0.0-SNAPSHOT不應再被使用。

而不是回去快照應該更新依賴於一個快照版本(例如moduleB-快照1.0.1)

話雖這麼說,釋放這取決於很多快照文物模塊不一個簡單的過程,因爲每個依賴項必須在釋放主要工件之前釋放。

大多數情況下,我們擁有的是一個主要的神器,它依賴於許多具有相同版本策略的其他工件(我們稱之爲企業模塊)。因此,您可以在一個地方定義一個屬性corporate-module-version,其中包含許多依賴關係使用的版本。

發佈過程如下:

  • 發佈版本號爲1.0.0(使用maven的釋放小插件每個快照相關性:這一步SCM您的企業模塊的所有的pom.xml後是1.0。1 - 拍攝)(見重要提示在這個帖子的末尾,以促進這一步驟)
  • 手動改變corporate-module-version屬性設置爲「1.0.0」在主神器(使所有快照依賴是由剛剛發佈更換版本)
  • 提交修改後的pom.xml持有corporate-module-version
  • 與Maven釋放小插件:釋放主神器(此後,在SCM在新版本將會像1.0.1-SNAPSHOT)
  • 手動corporate-module-version屬性更改爲t中的「1.0.1-SNAPSHOT」他主神器(使所有相關性由最新快照版本代替)

重要提示:具有牽着你的所有的企業模塊,多模塊父項目是一次釋放所有執行必須的公司模塊。爲了避免在maven-release-plugin和多模塊父項目中遇到太多麻煩,一定要把你父級的pom.xml放在一個目錄的上方,它們都是你的子級pom.xml(這是maven設計的建議,但不幸的是,有時候,eclipse用戶不會遵循它,因爲eclipse不喜歡分層項目)

+1

當我說回到SNAPSHOT時,我的意思是下一個版本的快照。看起來我必須手動更改每個版本的公司依賴版本,而不是理想的解決方案,但是可行,因爲所有版本都在頂級pom中定義爲屬性。 – Jeff 2013-02-22 13:49:00

相關問題