122

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

4

2 回答 2

175

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

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

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

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

2008 年 9 月(即 Maven 2 推出后的很长一段时间),创建了一个反应器插件,以使其能够(再次)更紧密地与 Maven 反应器交互。Brett Porter 在Reactor: My New Favourite Maven Plugin中发表了关于它的博文。

现在原生支持大多数反应器插件功能(从 Maven 2.1.0 开始)。请参阅Maven 提示和技巧:高级反应器选项

于 2010-01-12T16:47:17.563 回答
12

当项目有多个模块时使用 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  

更多细节:

于 2018-01-19T00:52:46.523 回答