1.什么是聚合工程
maven中可以创建 父工程(pom工程),子工程(非pom工程) 在 Maven父工程中 可以创建 多个子工程,通过父工程 对各个子工程 做jar的统一管理 和 统一构建

2.为什么要创建聚合工程
1.方便jar包管理,在父工程中管理依赖包,对版本做统一控制 2.方便构建,在父工程中执行构建命令,子工程会自动构建
3.创建聚合工程
3.1 创建父工程
1.创建父工程,修改pom文件(packaging 类型 修改为pom)


2.查看pom.xml
<!-- 打包方式必须指定为 pom方式,表示父工程 -->
<packaging>pom</packaging>
<!-- 表示 所管理的子工程-->
<modules>
<module>prozi01</module>
<module>prozi02</module>
<module>prozi03</module>
</modules>
3.2 创建子工程
1.File -> New -> Module…

2.查看pom.xml
<!-- 父工程坐标 -->
<parent>
<groupId>com.maven.java</groupId>
<artifactId>profu</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- 子工程坐标(如果 groupId、version和父工程一致,子工程坐标可以省略)-->
<!-- <groupId>com.maven.java</groupId>-->
<artifactId>prozi01</artifactId>
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- <packaging>jar</packaging>-->
4. 怎样实现 依赖统一管理
4.1 父子工程中 依赖的优先级
1.在父工程、子工程中配置 相同jar的不同版本
<!-- fu工程 -->
<dependency>
<groupId>com.gc.maven</groupId>
<artifactId>pro01</artifactId>
<version>v1</version>
</dependency>
<!-- zi01工程-->
<dependency>
<groupId>com.gc.maven</groupId>
<artifactId>pro01</artifactId>
<version>v2</version>
</dependency>
<!-- zi02工程-->
<dependency>
<groupId>com.gc.maven</groupId>
<artifactId>pro01</artifactId>
<version>v3</version>
</dependency>
子工程 优先使用 本工程配置的jar版本 如果子工程没有配置依赖,则使用父工程配置的jar版本
4.2 dependencyManagement 标签
<!-- 父工程中指定jar的版本信息 -->
<!-- 被管理的依赖并没有真正的被引入到工程-->
<dependencyManagement>
<dependencies>
<!-- zi01工程-->
<dependency>
<groupId>com.gc.maven</groupId>
<artifactId>pro01</artifactId>
<version>v1</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 子工程中 使用 dependencyManagement中的依赖-->
<dependencies>
<!-- 子工程中引用父工程的依赖信息时,可以把版本号去掉 -->
<!-- 具体版本号由 父工程中指定-->
<dependency>
<groupId>com.gc.maven</groupId>
<artifactId>pro01</artifactId>
</dependency>
</dependencies>
5. 怎样实现 统一构建的
<!-- 通过 父工程pom文件中 配置的model,进行构建 -->
<modules>
<module>prozi03</module>
<module>prozi02</module>
<module>prozi01</module>
</modules>
mvn dependency:list
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] profu [pom]
[INFO] prozi03 [jar]
[INFO] prozi02 [jar]
[INFO] prozi01 [jar]