Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何将maven项目与父pom作为模块集成?_Git_Maven_Module_Pom.xml - Fatal编程技术网

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

Git 如何将maven项目与父pom作为模块集成?,git,maven,module,pom.xml,Git,Maven,Module,Pom.xml,我想使用一个父maven项目/聚合器来构建我的项目和一个依赖项,我在我的源根目录中作为git子模块,例如 aggregator pom.xml - dependency pom.xml - project pom.xml 我天真地从GNUC/C++项目中修改了这个布局,比如coreutils,它只是将依赖项签出为子模块,并将它们与项目状态/commit一起更新为兼容的commit maven的问题是依赖项的pom.xml中有一个parent指令,删除它肯定需要修改依赖项,而这不是此设置的意

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

aggregator pom.xml
 - dependency pom.xml
 - project pom.xml
我天真地从GNUC/C++项目中修改了这个布局,比如
coreutils
,它只是将依赖项签出为子模块,并将它们与项目状态/commit一起更新为兼容的commit

maven的问题是依赖项的
pom.xml
中有一个
parent
指令,删除它肯定需要修改依赖项,而这不是此设置的意图。因此,同样的问题以一种完全不同的方式被问到:pom中的
父指令是否确实阻止项目被用作maven模块?。警告
在构建有效模型时是否会遇到一些问题,或者POM[dependency]的[dependency]'parent.relativePath'点是否位于[aggreator],而不是org.sonatype.oss:oss parent,请验证您的项目结构是否被忽略

我知道这不是maven的预期工作流程(考虑到本地缓存),通过使依赖项不是一个maven模块,而是一个
git
子模块,并在源根目录和依赖项子目录中编写调用
mvn
的两行构建脚本,可以很容易地实现这一点

我尝试使用
reactor
插件,但它根本无法构建任何未包含在
module
声明中的内容(包括
make
make dependents
目标)(错误
无法在reactor中找到项目[dependency];请确保指定了正确的组:artifactId

我使用的是maven 3.3.1

pom中的父指令是否明确禁止将项目用作maven模块

不可以。最终,父对象只是用来继承内容,它可以引用任何父对象。在多模块项目中,父级和子级相互指向(子级指父级,父级将子级定义为模块)。 另一方面,您可能想知道,为什么将任何项目用作模块都是一个问题。聚合器pom的作者可能有这样的原因

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


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

但是我得到
在为POM[dependency]的[dependency]'parent.relativePath'在[aggreator]而不是org.sonatype.oss:oss parent建立有效模型时遇到了一些问题,如果指定了父项,请验证您的项目结构。这就是我想要避免的。默认的相对路径是../pom.xml。在您的情况下,将relativePath设置为空字符串。看,这正是我想要的答案。在多模块项目中,父母和子女相互指向(子女指父母,父母将子女定义为模块)“可以,但不一定如此。请参阅:“然而,尽管两个POM项目、聚合器项目和父项目并不相同,也不应混淆。POM项目可以从其聚合的任何模块继承,但不一定有。相反,POM项目可以聚合不从其继承的项目。”