目录
1. 什么是聚合(Aggregation)
定义
聚合就是将多个独立的模块组织成一个整体,通过一次构建命令同时构建多个模块。
作用
快速构建:只需在聚合工程执行
mvn install
,即可根据依赖关系自动构建所有子模块。统一管理:便于集中管理依赖、版本与构建配置。
2. 聚合工程的特点
无业务代码:通常是一个空工程,只包含一个
pom.xml
文件。统一入口:执行构建命令时,会自动触发所有子模块的构建。
构建顺序自动确定:Maven 会根据模块之间的依赖关系决定构建顺序,与
<modules>
中书写的顺序无关。
3. Maven 聚合配置
在父工程的 pom.xml
中使用 <modules>
指定子模块路径:
<!-- 聚合模块配置 -->
<modules>
<module>../tlias-pojo</module>
<module>../tlias-utils</module>
<module>../tlias-web-management</module>
</modules>
注意
路径是相对于父工程
pom.xml
的相对路径子模块必须有自己的
pom.xml
文件
4. 示例项目结构
tlias-parent (父工程 / 聚合工程)
├── tlias-pojo
├── tlias-utils
└── tlias-web-management
5. 实战:Maven 多模块项目配置
假设我们有一个项目 web-ai-project03
,采用如下结构:
父工程:
tlias-parent
(聚合 + 父 POM)子模块:
tlias-pojo
(实体类模块)tlias-utils
(工具类模块)tlias-web-management
(Web 管理后台模块)
父工程 tlias-parent
的 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>
<!-- 继承 Spring Boot 默认配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.10</version>
<relativePath/>
</parent>
<!-- 聚合子模块 -->
<modules>
<module>../tlias-pojo</module>
<module>../tlias-utils</module>
<module>../tlias-web-management</module>
</modules>
<!-- 项目唯一标识 -->
<groupId>com.itheima</groupId>
<artifactId>tlias-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
</project>
6. 关键点解析
父工程继承
通过
<parent>
继承spring-boot-starter-parent
,所有子模块自动获得 Spring Boot 的默认依赖和插件配置。
模块聚合
<modules>
中声明的子模块会被一次性构建。
项目坐标
groupId
、artifactId
、version
组成了 Maven 工程的唯一坐标,子模块通过继承父 POM 获得这些信息。
7. 开发小贴士
聚合工程不仅能构建多个模块,还能结合 继承(Inheritance),在父工程集中管理依赖版本,避免版本冲突。
当子模块路径不在父工程目录下时,要确保
<module>
使用正确的相对路径。在 CI/CD 中,聚合工程可以作为构建入口,减少构建脚本的复杂度。
✅ 总结
Maven 聚合让多模块项目的构建变得简单高效,只需在父工程执行一次构建命令,就能自动处理子模块依赖与构建顺序,适合大型项目的模块化管理。