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]