2012-12-11 17 views
1

我有兩個多模塊項目。一個是主項目樹。另一個項目樹從第一個項目中引入工件(WAR,JAR等)。他們每個人都有自己獨立的家長團隊。在項目A發佈時更新項目B中的依賴關係

我想保持其版本號相同。項目2有一個依賴項管理部分,其中包含來自項目1的工件。這個問題是因爲快照而無法發佈項目。

例如。版本號(對於兩個項目)是3.4-SNAPSHOT。我可以發佈項目1的3.4版本,所有的POM版本將從3.4-SNAPSHOT設置爲3.5。當我進入項目2時,我想要做同樣的事情。順便說一下,項目1的依賴關係在3.4-SNAPSHOT,我不知道如何自動將它們設置爲3.5。這就像我希望在實際發佈之前將依賴關係更新到發佈版本。

據我所知,如果我讓兩棵樹從同一個父pom擴展,maven release插件會檢測作爲子模塊的依賴關係並自動更新它們。

我讀了一點關於versions plugin,但我不喜歡使用最新版本的一部分(它似乎危險)。更新屬性看起來很有前途,但在第二次粗略的看起來,它看起來像使用最新版本的插件打包略有不同。

此外,我嘗試了使用${project.version},但這基本上與將3.4-SNAPSHOT放入作爲依賴關係相同 - 它會錯誤地表明它不能由於快照而釋放,因爲該版本實際上尚未更新。

+0

我並不是說你的錯,但似乎有點奇怪,他們都應該有相同的版本,但不同的父母。 。 。 – chad

+0

它與包裝有關。 Project 2基本上是一個項目,它將我們的工件捆綁到可部署的項目中。 Exes,rmsms,vms等我想最終我們希望把他們全部置於同一父母之下,但這是一個比我目前可以解決的更大的變化。 – tfecw

+0

我們有一個類似的用例,即我們有構建的罐子和戰爭,然後是一堆二進制安裝程序和類似的東西。我們最初也試圖讓他們都擁有相同的版本號,因爲它們都是同一個「產品」的一部分,這似乎是有意義的。我們現在正在逐步爲每一個作品提供自己的版本,以使它們更具獨立性。這是一個複雜的故事。 。 。而且我們還沒有清理到足以考慮自動化發佈,唉。 – chad

回答

1

正如你承認的,這裏的正確答案是重新安排你的項目有一個共同的父母。其他任何只是一種解決方法。

但是,它在我看來像versions:use-releases可能實現您的目標。您可以指定包含列表以確保只更新項目1依賴關係。

如果您希望這是自動的,您可以考慮將此目標綁定到 compile之前的 lifecycle phases之一。

編輯:可悲的是,這看起來不可能。至少,這是我通過頁面頂部提到的「直接調用只執行」的理解。

+1

謝謝鄧肯,我發現這個:http://maven.40175.n5.nabble.com/release-process-and-SNAPSHOT-upgrade-td3409242.html哪些內容有一些很好的見解。 – tfecw

1

你配置項目的方式是完全獨立的。您可能會要求您的log4j依賴項的版本與您當前的項目B版本相同。

雖然它不會自動執行,但應該替換項目B中項目A的所有引用的版本,以便使用在父項目中爲項目B定義的屬性。然後,當您釋放項目A時,只需要更改一個POM,因此project.a.version屬性現在是發佈版本而不是SNAPSHOT。 B發佈後,您可以將其更改回${project.version}以保持同步。

+1

謝謝,正如鏈接中提到的,我回應鄧肯瓊斯的帖子,可能有辦法做你已經建議使用maven調用者插件的建議。否則,我會把一堆竹腳本放在一起來完成類似的事情。 – tfecw