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