我目前正在優化一個多模塊maven項目的maven版本。該項目由大約90個Maven模塊組成。通常有一些交叉庫構成核心,然後大約有15個「應用程序模塊」組成整個應用程序(然後部署爲WAR)創建多模塊maven獨立構建和發佈各個模塊?
現在一般情況下整個項目都有一個主版本「2.5」,所以當一個新的主版本完成時,所有的「應用模塊」都具有相同的版本「2.5.0」。到現在爲止還挺好。
如果某個模塊存在需要修復或需要改進的缺陷,應該發佈該「應用模塊」的新版本。因此,例如模塊A修復了一個錯誤,那麼A.jar應該在版本「2.5.1」中,其餘的應該仍然是「2.5.0」。
父(2.5.0-SNAPSHOT - 模塊A(2.5.1-SNAPSHOT) - 模塊B(2.5.0-SNAPSHOT) - 模塊C(2.5.2-SNAPSHOT) - 戰爭(2.5。 3-SNAPSHOT)< - 3在最後,因爲C有2個重新發布和一個,並在每個模塊發佈後發佈爲簡單起見
我們決定管理主pom中的神器版本,所以我們不在發佈一個模塊後,不需要更新每個artefact的依賴版本
所以現在每當更新的「應用程序模塊」準備就緒時,我們使用maven釋放插件來執行該模塊的發佈(我們正在發佈一個模塊,而不是整個項目)。假設我們在版本2.5.4中發佈了模塊A,導致A.jar被部署爲版本2.5.4,並通過將模塊代碼更新爲2.5.5-SNAPSHOT來完成。
完成此操作後,我們需要更新主POM中的版本,以便所有模塊繼續引用正確的版本。
感謝主POM的dependencyManagement部分,如果我建了戰爭模塊,它會自動選擇模塊A.
現在到了棘手的部分新版本:只要所有模塊被釋放,應該發佈新版本的Web應用程序。這應該包含所有未更改的模塊以及剛剛發佈的模塊。我目前正在努力如何做到這一點。如果我依賴父poms版本,則發行版將包含SNAPSHOT版本(所有版本增量都過高),而我和發行版插件不允許。
什麼是這種困境的最佳解決方案?
我有一個想法是將依賴管理外包給一個單獨的pom,然後使用「import」作用域將其導入到主poms dependencyManagement中。
這種szenario是一個愚蠢的想法?是否有替代方案來開發和維護這樣的大型多模塊應用程序?由於應用程序很大,客戶端應用程序必須加載更新的模塊版本,因此只需要將所有版本同步並在整個項目中使用發佈插件即可。我們的一些客戶的連接速度非常慢,因此每次推出所有模塊都會讓他們真的很不高興。
幫助非常感謝,
克里斯
嗨noahz, 感謝您的解釋它幫助。我意識到,如果我的模塊彼此之間不存在依賴關係,這將工作。不幸的是,他們這樣做。我有另一個想法如何解決這個問題,並創建了一個新的答案(可以用這種方式編寫多文本;-)) –