ChatGPT解决这个技术问题 Extra ChatGPT

Maven 中的“反应器”是什么?

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


M
Manuel Jordan

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

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

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

在 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网站说这个插件“退休”了?
因为反应器插件是一个(仅)与实际反应器“对话”的插件。所以不是反应堆本身退役了,而是一个与之相关的插件。
M
Manuel Jordan

当项目有多个模块时使用 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 提示和技巧:高级反应器选项