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