使用多个模块的指南
(如果您使用 Maven 4,请参阅本指南的 Maven 4 版本)
正如在 POM 的介绍中看到的,Maven 除了项目继承之外还支持项目聚合。本节概述了 Maven 如何处理具有多个模块的项目,以及如何更有效地使用它们。
反应堆
Maven 中处理多模块项目的机制称为reactor。Maven 核心的这一部分执行以下操作:
- 收集所有可用的模块来构建
- 将项目排序为正确的构建顺序
- 按顺序构建选定的项目
反应堆分选
因为多模块构建中的模块可以相互依赖,所以反应器以确保在需要之前构建任何项目的方式对所有项目进行排序是很重要的。
排序项目时遵循以下关系:
- 项目依赖于构建中的另一个模块
- 插件声明,其中插件是构建中的另一个模块
- 插件依赖于构建中的另一个模块
- 构建中另一个模块的构建扩展声明
- 元素中声明的顺序
<modules>
(如果没有其他规则适用)
请注意,仅使用“实例化”引用 -dependencyManagement
元素pluginManagement
不会导致反应器排序顺序发生变化。
命令行选项
无需特殊配置即可利用反应器,但可以自定义其行为。
可以使用以下命令行开关:
--resume-from
- 从指定项目恢复反应器(例如,当它在中间失败时)--also-make
- 构建指定的项目,以及它们在反应堆中的任何依赖项--also-make-dependents
- 构建指定的项目,以及任何依赖它们的项目--fail-fast
- 默认行为 - 每当模块构建失败时,立即停止整体构建--fail-at-end
- 如果特定模块构建失败,则继续反应堆的其余部分并在最后报告所有失败的模块--non-recursive
- 不要使用 reactor 构建,即使当前项目声明了模块并且只在当前目录中构建项目
有关这些开关的更多信息,请参阅 Maven 命令行界面参考。