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


105

我一直在阅读有关Maven反应堆的信息,并对其使用的术语感到困惑。我读过,多模块是反应堆,您可以操纵Maven反应堆,而反应堆是插件。反应堆到底是什么?

Answers:


164

反应器是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提示和技巧:高级Reactor选项》


10
为什么Maven网站说此插件“已退休”?
Mopparthy Ravindranath

4
因为反应堆插件是(仅)与实际反应堆“对话”的插件。因此,反应堆本身并不会退休,而是与之相关的插件。
朗萨克

8

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

资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.