Maven嵌套多模块项目

时间:2012-11-01 20:37:03

标签: maven nested multi-module

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

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

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

3 个答案:

答案 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选项可能会有所帮助。