目录
Maven 的聚合实现
1. 聚合的引入与背景
1.1 多模块项目构建难题
在分模块开发之后,一个项目被拆分为多个模块,这些模块间存在复杂的依赖关系。例如:tlias-web-management 模块需要依赖 tlias 和 pojo 模块。随着项目规模扩大、模块增多、依赖关系复杂,项目构建过程变得繁琐。
1.2 构建失败的常见原因
开发完成后,我们尝试直接对 tlias-web-management 执行 package 打包操作,发现构建失败。控制台输出提示:缺少 tlias-pojo 与 tlias-utils 两个 jar 包。原因是这两个模块未安装到本地仓库,Maven 在构建时找不到它们。
2. 构建过程的局限
2.1 依赖模块需手动安装
为解决上述问题,我们必须先手动对 pojo 与 utils 执行 install 操作,将它们安装进本地仓库。接着还需安装 peilars-parent(父工程),否则也会因无法找到其依赖坐标而构建失败。最后再次执行 web-management 的 package 操作才能成功打包。


2.2 构建顺序需人工维护
这个构建流程要求开发者必须清楚各模块间的依赖关系,并按正确顺序逐个 install,流程重复繁琐,且容易出错。
3. Maven 聚合的解决方案
3.1 聚合的核心作用
Maven 的聚合功能可以将多个模块组合成一个整体,通过聚合工程进行统一管理和构建。聚合可以一键实现整个项目的打包、安装、编译、清理等操作,避免了手动操作多个模块的繁琐过程。
3.2 聚合工程的定义
聚合工程本身没有业务逻辑,不包含代码,仅作为多个模块的聚合体。该工程通常只包含一个 pom.xml 文件,不包含 src 目录。一个常见做法是让 tlias-parent 既作为父工程,又作为聚合工程。
4. 聚合工程的构建步骤
4.1 modules 标签的使用
在 tlias-parent 的 pom.xml 文件中添加 <modules> 标签,用于声明需要聚合的模块:
<modules>
<module>../tlias-utils</module>
<module>../tlias-pojo</module>
<module>../tlias-web-management</module>
</modules>
各模块的路径相对 tlias-parent 书写。模块的声明顺序无影响,Maven 会根据实际依赖关系自动决定构建顺序。
4.2 聚合与构建演示
配置完成后,在 IDEA 中重新加载 Maven 项目。在 tlias-parent(聚合工程)上执行 clean、package 或 install,即可自动对其聚合的所有模块依次执行相同操作,控制台日志会显示所有子模块的构建成功信息。

5. 聚合带来的构建体验提升
5.1 一键式项目构建
通过聚合,只需在一个工程上操作,所有相关模块即可统一执行对应的生命周期操作,构建过程大大简化。
5.2 无需关心构建顺序
Maven 会根据模块间的依赖关系自动安排构建顺序,无需手动控制模块构建的先后顺序。
6. Maven继承与聚合的总结
6.1 各自作用
-
继承:用于统一管理依赖配置,简化模块间重复依赖声明。
-
聚合:用于统一构建多个模块,实现一键清理、编译、打包、安装。
6.2 相同点
-
两者均需一个打包方式为
pom的特殊模块; -
二者本身不编写业务代码,仅包含
pom.xml,通常删除src目录即可; -
通常将两种角色合并为一个模块(如 peilars-parent 即是父工程也是聚合工程)。
6.3 不同点
| 维度 | 继承 | 聚合 |
|---|---|---|
| 配置位置 | 在子模块 pom.xml 中通过 <parent> 指定父工程 | 在聚合工程 pom.xml 中通过 <modules> 声明所有模块 |
| 可感知性 | 父工程无法感知谁继承了自己 | 聚合工程明确知道聚合了哪些模块 |
| 功能用途 | 管理依赖配置 | 统一执行构建操作 |
END
学习自:黑马程序员——JavaWeb课程
862

被折叠的 条评论
为什么被折叠?



