我需要在我的POM.xml中有一个Parent声明吗?

问题描述:

我已经将我的项目声明为pom.xml来定义父项,并触发所有包含模块的反应堆构建。一切都很好,并按预期工作。它按照正确的顺序构建,所有的测试都能正确运行,并获得预期的输出。我需要在我的POM.xml中有一个Parent声明吗?

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

我的问题:我是否需要打扰在我的任何子项目中添加父项目声明?项目之间有双向关系有什么优点和缺点?如果我不添加声明,我会在事情停止后再努力吗?

改写为单个问题:为什么还要在模块pom.xml文件中配置<parent>配置?

你的问题与Project Inheritance和Project Aggregation之间的区别有关。 <parent>引用定义了继承关系。父pom.xml中的<modules>部分定义了聚合。他们是不同的。

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

有关详情,请查看Project Inheritance vs Project Aggregation

这取决于你如何配置你的构建。如果您拥有正确配置的家长pom,则可以在项目之间共享基本信息,如version and groupid

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

<modelVersion>4.0.0</modelVersion> 
<groupId>groupd.id</groupId> 
<artifactId>artifact.id</artifactId> 
<packaging>pom</packaging> 
<version>version</version> 

有了这个,您不必在模块项目中复制该信息。相同的信息可以这样引用:

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

请记住,父pom可用于共享比以上指定更多的信息。你可以做依赖管理,插件管理,甚至定义可重用的配置文件。