Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Maven 我需要在POM.xml中有父声明吗?_Maven - Fatal编程技术网

Maven 我需要在POM.xml中有父声明吗?

Maven 我需要在POM.xml中有父声明吗?,maven,Maven,我已经将我的项目声明为pom.xml来定义父级,它会触发所有包含模块的反应器构建。一切都很好,工作正常。它以正确的顺序构建,所有测试都正确运行,我得到了预期的输出 其中一个项目是共享库。我不想在这里添加声明,所以我没有这样做。这一切仍然有效 我的问题:我是否需要在我的任何子项目中添加父项目声明?在项目之间建立双向关系的利弊是什么?如果我不添加声明,当某些东西停止工作时,我会让它变得更难吗 重新表述为一个问题:为什么要在module pom.xml文件中配置?您的问题与项目继承与项目聚合之间的差异

我已经将我的项目声明为pom.xml来定义父级,它会触发所有包含模块的反应器构建。一切都很好,工作正常。它以正确的顺序构建,所有测试都正确运行,我得到了预期的输出

其中一个项目是共享库。我不想在这里添加
声明,所以我没有这样做。这一切仍然有效

我的问题:我是否需要在我的任何子项目中添加父项目声明?在项目之间建立双向关系的利弊是什么?如果我不添加声明,当某些东西停止工作时,我会让它变得更难吗


重新表述为一个问题:为什么要在module pom.xml文件中配置

您的问题与项目继承与项目聚合之间的差异有关。
引用定义了继承关系。父pom.xml中的
部分定义了聚合。他们是不同的

如果模块pom.xml中没有
配置,它将不会继承父pom.xml配置。因此,假设您在
部分的父pom中定义了依赖项的版本,没有父引用的模块pom.xml将不会继承该版本。或者,如果所有子模块都需要使用公共库,则可以在父pom.xml中定义依赖项。但是,没有父引用的模块pom.xml也不会继承该依赖关系


有关详细信息,请查看

这取决于您如何配置构建。如果您有正确配置的父pom,则可以在项目之间共享基本信息,如
版本和groupid

您可以定义应在项目中的所有模块中共享的项目范围的配置信息。例如:

<modelVersion>4.0.0</modelVersion>
<groupId>groupd.id</groupId>
<artifactId>artifact.id</artifactId>
<packaging>pom</packaging>
<version>version</version>
4.0.0
groupd.id
artifact.id
聚甲醛
版本
这样,模块项目中就不会有重复的信息。同样的信息可以这样引用:

<parent>
    <groupId>group.id</groupId>
    <artifactId>artifact.id</artifactId>
    <version>version</version>
</parent>

组id
artifact.id
版本
请记住,可以使用父pom来共享比上面指定的更多的信息。您可以进行依赖关系管理、插件管理,甚至定义可重用的配置文件