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