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**為主目錄的相對(duì)路徑册招。

二岔激、繼承
可聲明父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 完全繼承的話會(huì)造成坐標(biāo)沖突;另外即使使用不同的 groupId或version杉允,同樣的 artifactId也容易產(chǎn)生混淆扔嵌。
3、使用繼承后 parent也必須像自模塊一樣加入到聚合模塊中夺颤。也就是在在聚合模塊的 pom中加入<module>account-parent</module>

三、聚合與繼承的關(guān)系
區(qū)別
1.對(duì)于聚合模塊來說胁勺,它知道有哪些被聚合的模塊世澜,但那些被聚合的模塊不知道這個(gè)聚合模塊的存在。
2.對(duì)于繼承關(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)告插件配置等。  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末啡直,一起剝皮案震驚了整個(gè)濱河市烁涌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酒觅,老刑警劉巖撮执,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異舷丹,居然都是意外死亡抒钱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門颜凯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谋币,“玉大人,你說我怎么就攤上這事症概±俣睿” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵彼城,是天一觀的道長(zhǎng)诅蝶。 經(jīng)常有香客問我,道長(zhǎng)募壕,這世上最難降的妖魔是什么秤涩? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮司抱,結(jié)果婚禮上筐眷,老公的妹妹穿的比我還像新娘。我一直安慰自己习柠,他們只是感情好匀谣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著资溃,像睡著了一般武翎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溶锭,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天宝恶,我揣著相機(jī)與錄音,去河邊找鬼。 笑死垫毙,一個(gè)胖子當(dāng)著我的面吹牛霹疫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播综芥,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼丽蝎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了膀藐?” 一聲冷哼從身側(cè)響起屠阻,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎额各,沒想到半個(gè)月后国觉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虾啦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年麻诀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸逃。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖厂抽,靈堂內(nèi)的尸體忽然破棺而出需频,到底是詐尸還是另有隱情,我是刑警寧澤筷凤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布昭殉,位于F島的核電站,受9級(jí)特大地震影響藐守,放射性物質(zhì)發(fā)生泄漏挪丢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一卢厂、第九天 我趴在偏房一處隱蔽的房頂上張望乾蓬。 院中可真熱鬧,春花似錦慎恒、人聲如沸任内。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽死嗦。三九已至,卻和暖如春粒氧,著一層夾襖步出監(jiān)牢的瞬間越除,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摘盆,地道東北人翼雀。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像骡澈,于是被迫代替她去往敵國和親锅纺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一肋殴、聚合 為了能夠使用一條命令就能構(gòu)建 account-email和 account-persist兩個(gè)模塊囤锉,我們...
    madfrog_hc閱讀 380評(píng)論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)护锤,斷路器官地,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 好久沒有更新了驱入,在這里給大家說聲抱歉,實(shí)在是因?yàn)樽罱影嗝Τ晒仿任觯€有一個(gè)原因是我想把《maven實(shí)戰(zhàn)》這本書剩下的...
    小煉君閱讀 1,438評(píng)論 0 51
  • 前言什么是 POMQuick Overview POM 常用元素 pom.xml 完整注釋 參考 0 前言 什么是...
    seyvoue閱讀 12,581評(píng)論 1 36
  • 永遠(yuǎn)不要嘲笑別人的夢(mèng)想亏较。 忘了這句話是誰說的,聽過千萬遍掩缓,還是不理解雪情、做不到——直到我遇到了一件小事。 我讀的是一...
    豬豬是程序猿閱讀 398評(píng)論 1 3