什么是Maven的"反应堆"?

har*_*are 98 maven-2 maven maven-reactor

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

Pas*_*ent 155

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

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

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

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

在2008年9月(即Maven 2推出很长一段时间之后),已经创建了一个反应器插件,以便能够(再次)与Maven反应器更紧密地相互作用.Brett Porter在Reactor:My New Favorite Maven插件中发表了关于它的博文.

现在大多数反应堆插件功能都是本机支持的(自Maven 2.1.0起).请参阅Maven提示和技巧:高级反应器选项.

  • 为什么maven网站说这个插件"退役"了? (10认同)
  • 因为反应堆插件是一个插件,它(仅)与实际的反应堆"对话".所以反应堆本身并没有退役,而是一个与之相关的插件. (4认同)

Pre*_*raj 8

当项目具有多模块时,使用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  
Run Code Online (Sandbox Code Playgroud)

资源