如何将maven项目与父pom集成为模块?

时间:2015-08-02 10:36:52

标签: git maven module pom.xml

我想使用父maven项目/聚合器来构建我的项目以及我在源根目录中作为git子模块的依赖项,例如

aggregator pom.xml
 - dependency pom.xml
 - project pom.xml

我天真地从GNU C / C ++项目中调整了这个布局,比如coreutils,它只是将依赖关系作为子模块检出,并将它们与项目状态/提交一起更新为兼容的提交。

maven的问题是依赖项parent中有pom.xml指令,删除它肯定需要修改依赖项,这不是此设置的意图。所以,同样的问题是一个非常不同的方式: pom中的parent指令肯定会阻止项目被用作maven模块吗?。可以忽略警告Some problems were encountered while building the effective model or [dependency] 'parent.relativePath' of POM [dependency] points at [aggreator] instead of org.sonatype.oss:oss-parent, please verify your project structure吗?

我知道这不是maven的预期工作流程(考虑到本地缓存),并且可以通过使依赖不是maven模块而只是{{1}来轻松实现} submodule并编写一个两行构建脚本,在源根目录和dependency子目录中调用git

我尝试使用mvn插件,但它根本不构建reactor声明中未包含的任何内容(modulemake目标)(错误make-dependents)。

我正在使用maven 3.3.1。

1 个答案:

答案 0 :(得分:1)

  

pom中的父指令肯定会阻止项目用作maven模块

没有。最后,父母只是用来继承东西,它可以引用任何父母。在多模块项目中,父项和子项相互指向(子项指父项,父项将子项定义为模块)。 另一方面:您可能想知道为什么任何项目用作模块都是一个问题。聚合器pom的作者可能有理由。

  

警告是否可以在构建有效模型时遇到一些问题或[依赖]' parent.relativePath' POM [dependency]指向[aggreator]而不是org.sonatype.oss:oss-parent,请验证您的项目结构是否被忽略?

不应忽略它,必须正确设置,即在父级中使用<relativePath></relativePath>(空字符串)。