6

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

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

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

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

4

2 回答 2

11

您的问题与项目继承与项目聚合之间的区别有关。引用定义了<parent>继承关系。<modules>父 pom.xml 中的部分定义聚合。它们是不同的。

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

有关详细信息,请查看项目继承与项目聚合

于 2013-03-05T14:59:07.230 回答
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 可用于共享比上面指定的更多的信息。您可以进行依赖管理、插件管理,甚至定义可重用的配置文件。

于 2013-03-05T15:12:11.117 回答