我有一個看起來像一個multimodules Maven項目:
根---- ModuleA
ModuleB
ModuleC
ModuleD
.......
他們是根下有大約25個模塊:
- 其中一些代表t應用程序的核心(5個模塊)
- 而其餘每個模塊都表示與某個客戶類型相關的業務流程實施。這些模塊完全相互獨立。
當打包或發佈'Root'項目時,生成的構件是一個ZIP文件,它聚合了所有與'Root'模塊相關的JAR。
根據裝配描述符生成單個ZIP文件,它表示交付工件。
在目標環境的部署時間,單個ZIP在由引擎(一種提供最終服務的Java Web應用程序)使用(加載類)的目錄下解壓縮。
約束
- 從一個側面的「業務限制」,
- 而願意降低不同版本之間的迴歸上 對方
上述約束導致我們採取以下釋放方案:
要麼我們釋放Root和ALL其子模塊。這意味着 由此產生的ZIP會使用相同的 版本將所有子模塊JAR封裝在一起。 ZIP將包含類似於: [ModuleA-1.1.jar,ModuleB-1.1.jar,ModuleC-1.1.jar,ModuleD-1.1.jar, .......,ModuleX-1.1.jar]。
或者我們發佈其子模塊的Root和A FEW,我們想要更新的子模塊。 由此產生的ZIP將aggegate所有子模塊JAR:發佈的子模塊將與最後發佈的版本聚合,未發佈的子模塊將與另一個「適當」版本聚合。例如,如果我們做了這樣的增量版本,ZIP將包含類似於[ModuleA-1.2.jar,ModuleB-1.1.jar,ModuleC-1.2.jar,ModuleD-1.1.1.jar, ... ....,ModuleX-1.1.2.jar]。
- 要麼聲明模塊爲MAVEN MODULES '模塊'用於第一 場景
- 或者聲明模塊爲Maven依賴':
這些2種情況是由成爲可能依賴'爲 第二種情況,即INCREMENTAL情景。
問題
,當我們在第二個場景(增量)這兩種情況都可以正常使用但,行家釋放小插件:準備被上傳到SCM(SVN)的所有模塊[ModuleA,ModuleB,ModuleD,... ModuleX],它上傳已發佈和未發佈的模塊,而'非發佈模塊'在pom中聲明爲'依賴',而不是'模塊'。
1/IS有沒有辦法避免上傳'未發佈'模塊?有沒有辦法給SCM svn提供者注入'exlcude directrory list'?
2 /更全球性的問題,使用的方法是正確的嗎?或者它是反模式的用法?在那種情況下,應該有什麼選擇?
謝謝。
嗨,建議的設計更清潔,但它會給交付團隊帶來更多的工作。我想說,如果可以聲明Maven模塊沒有義務,'模塊'應該是Root項目目錄中的物理應用程序,那將是非常好的。如果有一種smlink插件允許在Root項目級定義'模塊',然後通過發佈Root項目,它的所有'子模塊'也將被釋放,並且只有這些子模塊將被上傳到SCM。你對此有何看法? – Alf 2013-03-22 14:17:08