2

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

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

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

4

3 回答 3

2

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

于 2012-11-01T21:41:11.330 回答
1

我认为实现这一目标的更好方法是使用-pl引用孙子模块之一。由于它可能取决于它的兄弟姐妹,因此可能会达到相同的结果。

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

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

mvn test -pl com.example:my-grandchild-module -am
于 2021-03-16T06:03:37.273 回答
1

Maven 这样做没有充分的理由,除了这就是 Maven 一直以来的行为方式-pm。该-am选项可以包括列出的任何模块中列出的模块-pl,因为父级在某种程度上“依赖于它们”,但因为它们不是严格意义上的依赖关系,Maven 不会。

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

于 2019-02-18T05:58:46.997 回答