Maven 中的“反应器”是啥?

Posted

技术标签:

【中文标题】Maven 中的“反应器”是啥?【英文标题】:What is the "reactor" in Maven?Maven 中的“反应器”是什么? 【发布时间】:2011-01-04 05:57:17 【问题描述】:

我一直在阅读有关 Maven 反应器的信息,但对它的术语用法感到困惑。我读过一个多模块是一个反应器,你可以操纵 Maven 反应器,反应器是一个插件。反应堆到底是什么?

【问题讨论】:

【参考方案1】:

反应器是 Maven 的一部分,它允许它在一组模块上执行目标。正如 Maven 1.x documentation on multi-modules builds 中提到的(反应器概念在 Maven 1.x 中已经存在),虽然模块是离散的工作单元,但可以使用反应器将它们聚集在一起以同时构建它们 em> 和:

反应器根据每个项目在其各自项目描述符中声明的依赖关系确定正确的构建顺序,然后将执行一组声明的目标。它可用于构建项目和其他目标,例如站点生成。

正如所解释的,反应器使多模块构建成为可能:它计算模块之间依赖关系的有向图,从该图导出构建顺序(这就是不允许循环依赖关系的原因,无论如何这都是好事),然后在模块上执行目标。换句话说,“multi-modules build”是“reactor build”,“reactor build”是“多模块构建"。

在 Maven 2.x 中,对多模块构建的支持得到了很大改进,并且反应器对 Maven 用户变得透明。但它仍然存在并在引擎盖下使用。

在 2008 年 9 月(即 Maven 2 推出后的很长时间),创建了一个 reactor plugin 以使其能够(再次)更紧密地与 Maven 反应器交互。 Brett Porter 在Reactor: My New Favourite Maven Plugin 上写了一篇博客。

现在原生支持大多数反应器插件功能(从 Maven 2.1.0 开始)。见Maven Tips and Tricks: Advanced Reactor Options。

【讨论】:

为什么maven网站说这个插件“退休”了? 因为反应器插件是一个(仅)与实际反应器“对话”的插件。所以不是反应堆本身退役了,而是一个与之相关的插件。【参考方案2】:

当项目有多个模块时使用Reactor。

reactor所做的工作是:

收集模块详细信息 根据依赖关系排序 按顺序构建项目

从 2.1 版本开始,有新的命令行选项允许您操作 Maven 构建多模块项目的方式。这些新选项是:

-rf, --resume-from
    Resume reactor from specified project
-pl, --projects
    Build specified reactor projects instead of all projects
-am, --also-make
    If project list is specified, also build projects required by the list
-amd, --also-make-dependents
    If project list is specified, also build projects that depend on projects on the list  

更多细节:

Maven Tips and Tricks: Advanced Reactor Options

【讨论】:

以上是关于Maven 中的“反应器”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

查找多模块Maven反应器项目的根目录

在 Maven 反应器项目中管理运行时依赖项

Maven 反应器:使用 Spring Boot 启动器 pom 的 pom

解决 Maven 警告“在构建的此时无法解决以下依赖项,但似乎是反应器的一部分”

Maven 中的项目工件到底是啥? [复制]

Maven 的 pom.xml 中的 pluginManagement 是啥?