我正在构建一个多模块项目,其中一个模块也是一个多模块项目。当我尝试使用 独立构建嵌套的多模块-pl <multi-module child>
时,Maven 只构建 pom(子模块的顶级模块),而不构建多模块项目中指定的其余模块。
如果我不使用-pl
并构建所有模块,一切正常,项目按预期构建。
任何想法为什么会发生这种情况,如果我单独挑出它,我无法让 Maven 构建整个项目?
我正在构建一个多模块项目,其中一个模块也是一个多模块项目。当我尝试使用 独立构建嵌套的多模块-pl <multi-module child>
时,Maven 只构建 pom(子模块的顶级模块),而不构建多模块项目中指定的其余模块。
如果我不使用-pl
并构建所有模块,一切正常,项目按预期构建。
任何想法为什么会发生这种情况,如果我单独挑出它,我无法让 Maven 构建整个项目?
该-pl
选项完全构建您指定的项目。Maven 将父 POM 视为恰好是层次结构中的第一个的常规项目。您可以做的是浏览您的“子多模块”项目并从那里执行 Maven。该选项-rf
(简历来自)也可能有效。
我认为实现这一目标的更好方法是使用-pl
引用孙子模块之一。由于它可能取决于它的兄弟姐妹,因此可能会达到相同的结果。
这个项目是如何做到这一点的一个很好的例子: https ://github.com/andyglick/maven-multi-level-modules-project
简而言之,您可以这样做:
mvn test -pl com.example:my-grandchild-module -am
Maven 这样做没有充分的理由,除了这就是 Maven 一直以来的行为方式-pm
。该-am
选项可以包括列出的任何模块中列出的模块-pl
,因为父级在某种程度上“依赖于它们”,但因为它们不是严格意义上的依赖关系,Maven 不会。
如果 Maven 是一个活跃的项目,一个新的-amm
also-make-modules 选项可能会有所帮助。