什么是Maven的“反应堆”?

时间:2010-01-12 15:55:35

标签: maven maven-2 maven-reactor

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

2 个答案:

答案 0 :(得分:146)

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

  

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

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

答案 1 :(得分:6)

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

反应堆完成的工作是:

  • 收集模块详情
  • 根据依赖关系对订单进行排序
  • 按顺序构建项目

从Maven 2.1版本开始,有新的Maven命令行选项,允许您操纵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  

source