Maven聚合與繼承
系統(tǒng)
1526 0
?
Maven
聚合與繼承
一、聚合
為了能夠使用一條命令就能構(gòu)建
?
account-email
和
?
account-persist
兩個(gè)模塊,我們需要建立一個(gè)額外的名為
?
account-aggregator
的模塊,然后通過該模塊構(gòu)建整個(gè)項(xiàng)目的所有模塊。
?
account-aggregator
本身也是個(gè)
?
Maven
項(xiàng)目,它的
?
POM
如下
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId>account-aggregator</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging> pom </packaging>
<name>Account Aggregator</name>
<modules>
<module>account-email</module>
<module>account-persist</module>
</modules>
</project>
?
注意:
packaging
的類型為
pom
?
,
module
的值是一個(gè)以當(dāng)前
POM
為主目錄的相對路徑。
二、繼承
可聲明父
POM
供子
?
POM
繼承
父模塊
POM
如下:
?
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId> account-parent </artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Account Parent</name>
</project>
?
子模塊聲明繼承如下:
?
<project>
<modelVersion>4.0.0</modelVersion>
< parent >
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId> account-parent </artifactId>
<version>1.0.0-SNAPSHOT</version>
< relativePath >../account-parent/pom.xml</ relativePath>
</ parent >
<artifactId> account-email </artifactId>
<name>Account Email</name>
...
</project>
?
最后,同樣還需要把
?
account-parent
加入到聚合模塊
account-aggregator
中。聚合的
?
POM
如下:
?
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId>account-aggregator</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging> pom </packaging>
<name>Account Aggregator</name>
<modules>
<module>account-email</module>
<module>account-persist</module>
<module> account-parent</module>
</modules>
</project>
?
注意:
1
、子模塊沒有聲明
groupId
和
version,
?
這兩個(gè)屬性繼承至父模塊。但如果子模塊有不同與父模塊的
?
groupId
、
version
?
,也可指定;
2
、不應(yīng)該繼承
artifactId,
如果
groupId
?
,
version
,
artifactId
?
完全繼承的話會造成坐標(biāo)沖突;另外即使使用不同的
?
groupId
或
version
,同樣的
?
artifactId
也容易產(chǎn)生混淆。
3
、使用繼承后
?
parent
也必須像自模塊一樣加入到聚合模塊中。也就是在在聚合模塊的
?
pom
中加入
<module>account-parent</module>
?
三、聚合與繼承的關(guān)系
區(qū)別
?
:
1
.
對于聚合模塊來說,它知道有哪些被聚合的模塊,但那些被聚合的模塊不知道這個(gè)聚合模塊的存在。
2.
對于繼承關(guān)系的父
?
POM
來說,它不知道有哪些子模塊繼承與它,但那些子模塊都必須知道自己的父
?
POM
是什么。
共同點(diǎn)
?
:
1.
聚合
?
POM
與繼承關(guān)系中的父
POM
的
?
packaging
都是
pom
2.
聚合模塊與繼承關(guān)系中的父模塊除了
?
POM
之外都沒有實(shí)際的內(nèi)容。
注:在現(xiàn)有的實(shí)際項(xiàng)目中一個(gè)
?
POM
既是聚合
POM
,又是父
?
POM
,這么做主要是為了方便
四、
Maven
可繼承的
POM
?
元素
groupId :項(xiàng)目組 ID ,項(xiàng)目坐標(biāo)的核心元素;
version :項(xiàng)目版本,項(xiàng)目坐標(biāo)的核心元素;
description :項(xiàng)目的描述信息;
organization :項(xiàng)目的組織信息;
inceptionYear :項(xiàng)目的創(chuàng)始年份;
url :項(xiàng)目的 url 地址
develoers :項(xiàng)目的開發(fā)者信息;
contributors :項(xiàng)目的貢獻(xiàn)者信息;
distributionManagerment :項(xiàng)目的部署信息;
issueManagement :缺陷跟蹤系統(tǒng)信息;
ciManagement :項(xiàng)目的持續(xù)繼承信息;
scm :項(xiàng)目的版本控制信息;
mailingListserv :項(xiàng)目的郵件列表信息;
properties :自定義的 Maven 屬性;
dependencies :項(xiàng)目的依賴配置;
dependencyManagement :醒目的依賴管理配置;
repositories :項(xiàng)目的倉庫配置;
build :包括項(xiàng)目的源碼目錄配置、輸出目錄配置、插件配置、插件管理配置等;
reporting :包括項(xiàng)目的報(bào)告輸出目錄配置、報(bào)告插件配置等。
?
?
Maven聚合與繼承
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元