【问题标题】:Maven Nested Multi-module projectMaven嵌套多模块项目
【发布时间】:2012-11-01 20:37:02
【问题描述】:

我正在构建一个多模块项目,其中一个模块也是一个多模块项目。当我尝试使用-pl <multi-module child> 独立构建嵌套多模块时,Maven 只构建 pom(子级的顶级模块),而不构建多模块项目中指定的其余模块。

如果我不使用 -pl 并构建所有模块,一切正常,项目按预期构建。

任何想法为什么会发生这种情况,如果我单独挑出它,我无法让 Maven 构建整个项目?

【问题讨论】:

    标签: maven nested multi-module


    【解决方案1】:

    -pl 选项完全构建您指定的项目。 Maven 将父 POM 视为恰好是层次结构中的第一个的常规项目。 您可以做的是浏览您的“子多模块”项目并从那里执行 Maven。 -rf (resume from) 选项也可能有效。

    【讨论】:

    • 我无法浏览到该模块,因为我正在从顶级父级执行构建并指定我需要构建哪个项目。所以,现在我必须构建所有 12 个才能构建这个多模块项目,而我只想构建 2 个。我尝试了“mvn clean deploy -pl -rf 没有运气。结果和以前一样,只构建了 pom。
    • 不带 -pl 可以试试吗?
    【解决方案2】:

    没有充分的理由让 Maven 如此行事,除了这就是 Maven 在-pm 下的一贯行为。 -am 选项可以包含 -pl 中列出的任何模块中列出的模块,因为父级在某种程度上“依赖于它们”,但因为它们不是严格意义上的依赖关系,Maven 不会。

    如果 Maven 是一个活跃的项目,一个新的 -ammalso-make-modules 选项可能会有所帮助。

    【讨论】:

      【解决方案3】:

      我认为实现这一目标的更好方法是使用-pl 来引用其中一个孙子模块。由于它可能依赖于它的兄弟,will 可能会达到相同的结果。

      这个项目是一个很好的例子,说明如何做到这一点: https://github.com/andyglick/maven-multi-level-modules-project

      简而言之,你可以这样做:

      mvn test -pl com.example:my-grandchild-module -am
      

      【讨论】:

        猜你喜欢
        • 2020-10-18
        • 2012-06-29
        • 2017-12-21
        • 1970-01-01
        • 2018-02-06
        • 1970-01-01
        • 2021-02-09
        • 2011-01-04
        • 2017-10-20
        相关资源
        最近更新 更多