我需要在我的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也不会继承该依赖项。
这取决于你如何配置你的构建。如果您拥有正确配置的家长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可用于共享比以上指定更多的信息。你可以做依赖管理,插件管理,甚至定义可重用的配置文件。