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

How to integrate a maven project with parent pom as module?

我想使用父 Maven project/aggregator 来构建我的项目和我在源根目录中作为 git 子模块的依赖项,例如

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

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

maven 的问题是 pom.xml 依赖项中有一个 parent 指令,删除它肯定需要修改依赖项,这不是此设置的目的。因此,以非常不同的方式提出的同一个问题是: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 模块而只是 git 子模块并编写两行构建脚本,在源根目录和依赖项子目录中调用 mvn

我尝试使用 reactor 插件,但它根本无法构建任何未包含在 module 声明中的内容(makemake-dependents目标)(错误Couldn't find project [dependency] in reactor; make sure you specified the correct group:artifactId)。

我正在使用 maven 3.3.1。

Is a parent directive in a pom definitely preventing a project from being used as a maven module

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

Can the warning 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 be ignored?

不应该忽略,必须正确设置,即在parent.

中使用<relativePath></relativePath>(空字符串)