【问题标题】:Enforce the order in which modules are build强制执行构建模块的顺序
【发布时间】:2015-05-14 09:27:56
【问题描述】:

我有带有模块module1module2module3 等的maven 项目。我已经在父级的 pom.xml 中定义了这些模块,看起来像

  <modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
        .
        .
    <module>module56</module>
  </modules>

默认情况下,“maven-reactor”通过应用Guide to Working with Multiple Modules 中描述的规则对模块进行排序 但是,我不想使用 maven 对模块进行排序,而是使用我在父 pom.xml 中提供的顺序。

【问题讨论】:

  • 问题是你为什么要自己做?除此之外,链接不正确。

标签: maven maven-plugin maven-reactor


【解决方案1】:

您已经发布了官方参考资料,告诉您这是不可能的,您只能通过命令行参数影响反应器设置(这并不意味着您可以实际控制反应器概念本身)。

没有任何测试,但仅通过命令行选项http://books.sonatype.com/mvnref-book/reference/running-sect-options.html 的描述我会告诉它根本不可能。您可以通过使用 -r 参数后跟 Maven 项目来忽略模块定义(已经不是您想要的),但这不会影响反应器生成的(逻辑上有意义的)构建顺序。

在我看来,这也毫无意义,因为生成的构建顺序正是大多数人使用 Maven 的原因——或者至少是“应用程序依赖管理”上下文中非常重要的关键特性)。从 Maven 的角度来看,我会调整我的构建以使用 Maven,而不是尝试调整 Maven 以满足您的要求(也许 Maven 也只是您设置的错误构建工具)。

【讨论】:

  • -r 选项仅在 Maven 2 中可用,即 End Of Life。在 Maven 3 中不再存在这样的选项。
  • @khmarbaise 感谢您提到这一点(我实际上对其进行了过度评价,并认为它会从 2.x 开始 :))如果朝着这个方向前进是否有意义,这更是一个过度思考的理由。
【解决方案2】:

如果您想自己对模块的顺序进行排序,那么您并不了解这种排序的关键概念。

排序是基于模块之间的依赖关系完成的,这意味着一个模块需要在另一个将其用作依赖关系的模块之前构建。

你想手动做一些你不应该做的事情。让工具为您完成工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多