您好,登錄后才能下訂單哦!
聚合模塊為項目目錄的最頂層,其他模塊作為聚合模塊子目錄而存在。目的是為一次構(gòu)建多個項目模塊。
我自己化了一個關(guān)于項目的關(guān)系:
maven-aggregate作為maven pom項目,需要定義pom.xml的 packaging 為 pom類型
我們還是參照 maven的依賴特性,沖突解決(五) 創(chuàng)建 maven-01 maven-02 maven-03工程,通過maven-aggregate pom工程 對這三個maven項目做一個聚合,配置如下:
Xml代碼 下載
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sohu.train</groupId>
<artifactId>maven-aggregate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 子模塊 指定項目pom的位置 ..代表上一級目錄-->
<modules>
<module>../maven-01</module>
<module>../maven-02</module>
<module>..maven-03</module>
</modules>
</project>
對 maven-aggregate執(zhí)行下mvn clean compile
Xml代碼 下載
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.sohu.train:maven-02:jar:1.0-SNAPSHORT
[WARNING] 'dependencies.dependency.exclusions.exclusion.groupId' for junit:junit:jar is missing. @ line 38, column 16
[WARNING] 'dependencies.dependency.exclusions.exclusion.artifactId' for junit:junit:jar is missing. @ line 38, column 16
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order: //構(gòu)建 maven 的反應(yīng)堆,執(zhí)行清理 編譯的順序
[INFO]
[INFO] maven-02
[INFO] maven-01
[INFO] maven-03
[INFO] maven-aggregate
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-02 1.0-SNAPSHORT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-02 ---
[INFO] Deleting E:\train\test\maven-02\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\train\test\maven-02\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-02 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\train\test\maven-02\target\classes
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-01 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-01 ---
[INFO] Deleting E:\train\test\maven-01\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-01 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-01 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\train\test\maven-01\target\classes
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-03 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-03 ---
[INFO] Deleting E:\train\test\maven-03\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-03 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\train\test\maven-03\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-03 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\train\test\maven-03\target\classes
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-aggregate 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-aggregate ---
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary: // 可以看到 對3個maven項目 一起執(zhí)行編譯
[INFO]
[INFO] maven-02 ........................................... SUCCESS [ 1.874 s]
[INFO] maven-01 ........................................... SUCCESS [ 0.108 s]
[INFO] maven-03 ........................................... SUCCESS [ 0.158 s]
[INFO] maven-aggregate .................................... SUCCESS [ 0.002 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.263 s
[INFO] Finished at: 2016-01-15T14:35:41+08:00
[INFO] Final Memory: 14M/227M
[INFO] ------------------------------------------------------------------------
這樣我們就完成 maven對子模塊的聚合 ,像我們平常用的dubbo jetty tomcat spring hibernate等等 都是按模塊 去開發(fā),一次編譯 各個模塊都能緊密聯(lián)系在一起了。我們在平常開發(fā)項目也需要適當(dāng)?shù)娜シ帜K開發(fā),
這是dubbo的子模塊,分了很多子模塊:下載
pom繼承是為了抽出重復(fù)配置,通常配置在父模塊中,為子模塊提供使用,這樣可以做到“一處聲明,處處使用”。
下載
1.常用的pom被繼承的元素
Xml代碼 下載
groupId :項目組 ID ,項目坐標的核心元素;
version :項目版本,項目坐標的核心元素;
description :項目的描述信息;
properties :自定義的 Maven 屬性;
dependencies :項目的依賴配置;
dependencyManagement :醒目的依賴管理配置;
repositories :項目的倉庫配置;
build :包括項目的源碼目錄配置、輸出目錄配置、插件配置、插件管理配置等;
1.配置maven-aggregate pom文件:
Xml代碼 下載
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sohu.train</groupId>
<artifactId>maven-aggregate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 子模塊 -->
<modules>
<module>../maven-01</module>
<module>../maven-02</module>
<module>../maven-03</module>
</modules>
<!-- 統(tǒng)一配置構(gòu)件的版本號 -->
<properties>
<junit.version>3.8.1</junit.version>
</properties>
<!-- 依賴管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
maven-01,maven-02,maven-03 需要配置parent ,dependencies,同時對junit做一個依賴,3個工程的pom配置如下:
Xml代碼 下載
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 指定父pom的坐標及pom位置 -->
<parent>
<groupId>com.sohu.train</groupId>
<artifactId>maven-aggregate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../maven-aggregate/pom.xml</relativePath>
</parent>
<artifactId>maven-03</artifactId>
<packaging>jar</packaging>
<!-- 添加對junit依賴,這樣公用配置只需要在maven-aggregate中去配置 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
這樣就完成pom的繼承,講公用的jar一次配置,就可以實現(xiàn)多處引用了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。