我已将我的项目声明为pom.xml以定义父项,并触发所有包含模块的反应器构建。一切都很好,并按预期工作。它以正确的顺序构建,所有测试都正确运行,并且我获得了预期的输出。
其中一个项目是共享库。我不想在这里添加<parent>
声明,所以我没有。一切都还行。
我的问题:我是否需要在任何子项目中添加父项目声明?项目之间建立双向关系的利弊是什么?如果我没有添加声明,那么当某些东西停止工作时,我是否会更加努力?
重新提到一个问题:为什么要在模块pom.xml文件中使用<parent>
配置?
答案 0 :(得分:9)
您的问题与项目继承与项目聚合之间的区别有关。 <parent>
引用定义了继承关系。父pom.xml中的<modules>
部分定义聚合。它们是不同的。
如果模块pom.xml中没有<parent>
配置,它将不会继承父pom.xml配置。因此,假设您在<dependencyManagement>
部分中定义父pom中的依赖项版本,没有父引用的模块pom.xml将不会继承该版本。或者,如果所有子模块都需要使用公共库,则可以在父pom.xml中定义依赖项。但是,没有父引用的模块pom.xml也不会继承该依赖项。
答案 1 :(得分:0)
这取决于您如何配置构建。如果您有正确配置的父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可用于共享比上面指定的更多信息。您可以进行依赖关系管理,插件管理甚至可以定义可重用的配置文件。