Maven聚合與繼承
一、聚合
為了能夠使用一條命令就能構建 account-email和 account-persist兩個模組,我們需要建立一個額外的名為 account-aggregator的模組,然後通過該模組構建整個專案的所有模組。 account-aggregator本身也是個 Maven專案,它的 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的值是一個以當前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, 這兩個屬性繼承至父模組。但如果子模組有不同與父模組的 groupId、version ,也可指定;
2、不應該繼承artifactId,如果groupId ,version,artifactId 完全繼承的話會造成座標衝突;另外即使使用不同的 groupId或version,同樣的 artifactId也容易產生混淆。
3、使用繼承後 parent也必須像自模組一樣加入到聚合模組中。也就是在在聚合模組的 pom中加入<module>account-parent</module>
三、聚合與繼承的關係
區別 :
1.對於聚合模組來說,它知道有哪些被聚合的模組,但那些被聚合的模組不知道這個聚合模組的存在。
2.對於繼承關係的父 POM來說,它不知道有哪些子模組繼承與它,但那些子模組都必須知道自己的父 POM是什麼。
共同點 :
1.聚合 POM與繼承關係中的父POM的 packaging都是pom
2.聚合模組與繼承關係中的父模組除了 POM之外都沒有實際的內容。
注:在現有的實際專案中一個 POM既是聚合POM,又是父 POM,這麼做主要是為了方便
四、Maven可繼承的POM 元素
groupId :專案組 ID ,專案座標的核心元素;
version :專案版本,專案座標的核心元素;
description :專案的描述資訊;
organization :專案的組織資訊;
inceptionYear :專案的創始年份;
url :專案的 url 地址
develoers :專案的開發者資訊;
contributors :專案的貢獻者資訊;
distributionManagerment :專案的部署資訊;
issueManagement :缺陷跟蹤系統資訊;
ciManagement :專案的持續繼承資訊;
scm :專案的版本控制資訊;
mailingListserv :專案的郵件列表資訊;
properties :自定義的 Maven 屬性;
dependencies :專案的依賴配置;
dependencyManagement :醒目的依賴管理配置;
repositories :專案的倉庫配置;
build :包括專案的原始碼目錄配置、輸出目錄配置、外掛配置、外掛管理配置等;
reporting :包括專案的報告輸出目錄配置、報告外掛配置等。
相關文章
- Maven 聚合與繼承Maven繼承
- Maven--繼承與聚合Maven繼承
- 【Maven】聚合和繼承Maven繼承
- maven 學習總結(五)——聚合與繼承Maven繼承
- Maven中模組的聚合以及對jar包的繼承MavenJAR繼承
- 多繼承 與 多重繼承繼承
- Maven中dependency和plugins的繼承與約束MavenPlugin繼承
- 繼承與派生繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- 繼承與多型繼承多型
- 繼承與組合繼承
- Java:類與繼承Java繼承
- 繼承與介面 (轉)繼承
- 原型,繼承——原型繼承原型繼承
- 菱形繼承,虛繼承繼承
- javascript - 繼承與原型鏈JavaScript繼承原型
- java繼承與多型Java繼承多型
- 繼承(extends)與介面( implements)繼承
- class語法與繼承繼承
- Java的類與繼承Java繼承
- C++繼承詳解:共有(public)繼承,私有(private)繼承,保護(protected)繼承C++繼承
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- JavaScript 的繼承與多型JavaScript繼承多型
- ES6 - 類與繼承繼承
- Java 自學 - 介面與繼承 介面Java繼承
- JavaScript基礎: 類與繼承JavaScript繼承
- Javascript物件導向與繼承JavaScript物件繼承
- Javascript的繼承與多型JavaScript繼承多型
- 菱形繼承與虛基類繼承
- 繼承 基類與派生類繼承
- 繼承繼承
- C++ 多級繼承與多重繼承:程式碼組織與靈活性的平衡C++繼承
- C++繼承一之公有繼承C++繼承
- JS原型繼承和類式繼承JS原型繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- 公有繼承、私有繼承和保護繼承之間的對比繼承