modules標(biāo)簽使用
<modules> <module>api-a</module> <module>api-b</module> <module>api-c</module> </modules>
從字面意思來說,module就是模塊,而pom.xml中的modules也正是這個意思,用來管理同個項目中的各個模塊;如果maven用的比較簡單,或者說項目的模塊在pom.xml沒進行劃分,那么此元素是用不到的;不過一般大一點的項目是要用到的。
如果我們的項目分成了好幾個模塊,那么我們構(gòu)建的時候是不是有幾個模塊就需要構(gòu)建幾次了(到每個模塊的目錄下執(zhí)行mvn命令)?當(dāng)然,你逐個構(gòu)建沒問題,但是非要這么麻煩的一個一個的構(gòu)建嗎,那么簡單的做法就是使用聚合,一次構(gòu)建全部模塊。
什么是maven聚合項目
maven聚合項目也就是多模塊項目,(根據(jù)項目需求,把功能或服務(wù)劃分成不同的模塊進行開發(fā),子模塊繼承父類通過maven統(tǒng)一管理,聚合)
modules標(biāo)簽作用
項目A下有一個pom.xml。
項目A下有兩個module,每個module中有自己的pom.xml。
在項目A的pom中加入標(biāo)簽,將兩個module加入其中。
在構(gòu)建這個項目的時候,不需要深入每個module去單獨構(gòu)建,而只是在項目A下的pom.xml構(gòu)建,就會完成對兩個module的構(gòu)建。
如果項目下多module,modules標(biāo)簽的優(yōu)勢將更加明顯。
maven聚合項目實例
1, 建立一個普通的maven Java工程(并刪除掉src文件夾)
2, 建立子模塊child-a, child-b
注意:這里子模塊的父模塊為multi-module-deom
3, 最后 父模塊的pom.xml文件
子模塊的pom.xml文件
第三步:和普通的maven項目相比聚合項目有什么特點
和普通項目相比
聚合項目的父類pom文件的packaging的值為pom
在父類中有指向子類的元素
在子類的pom中有有指向父類的元素,每個module的目錄結(jié)構(gòu)和一般的maven項目沒有區(qū)別
在父類pom中添加的依賴在子pom中可以繼承。
各個module之間的關(guān)系是怎樣的
對于聚合模塊來說,它知道哪些被聚合的模塊,但那些被聚合的模塊不知道這個聚合模塊的存在。
對于繼承關(guān)系的父pom來說,它不知道有哪些子模塊繼承與它,但那些子模塊都必須知道自己的父pom是什么。