15

对于 maven 父子关系, 我遇到了以下“模式”:http: 关系船示例//yuml.me/3f8dd366

在这个例子中,我们有一个带有 2 个子模块的模块。该模块有一个父 pom “构建模块的父级”,它知道两个子模块是子模块。

子模块从来不知道这个父级认识他们,他们认为他们的父级是名为“依赖管理的父级”的那个。它具有通用配置,如依赖管理、插件配置、通用属性等。

我的问题:
这是一个“好”的模式吗?意思是它有优点/缺点,因为孩子<->父母关系的看似更直观的模式

4

3 回答 3

10

一件有趣的事情是聚合器 pom。

这是一个按模块对项目进行分组的 pom,没有“父子”关系。聚合器 pom 没有依赖项管理。它只管理构建。

同时拥有父 pom 和聚合器 pom 是 maven 的一个非常强大的特性。

您可以在此处找到更多信息。

这个 maven 页面还对如何为复杂项目设置 pom 提供了宝贵的见解。

于 2013-03-20T11:21:04.827 回答
9

嗯...我想我不同意你照片上的条款。这是我的看法:

在此处输入图像描述

这种组织模块的方式可能会让很多开发人员感到困惑,但这是一种合法的做事方式。

无论如何,我不推荐这种方法,因为它令人困惑。但有时,他们也别无选择。

什么时候使用这个配置?

一个(或多个)子模块已经有一个父模块(即在另一个项目中开发但您需要重新构建它)。请注意,<module>多模块项目中的条目是相对路径,因此您可以使用以下内容:

<modules>
    <module>../../somedir/othermodule</module>
    ...
</modules>

如果可能,我建议将多模块也用作父模块,因为:

  • 不那么混乱
  • 干净可读<modules><parent>部分(无需使用丑陋的相对路径来指定模块或子模块
  • 您可以在 SCM 下以干净的分层结构组织模块(这样 maven-release-plugin 会很高兴)(我知道 eclipse 不喜欢分层项目,但这是另一个问题)
于 2013-03-20T12:15:05.640 回答
0

拥有一个公司范围内的配置 pom 实际上很好,它不关心它的孩子,并且包含属性,dependecyManagement,存储库,pluginManagement 等所有东西都将继承的东西

也许这可以帮助你:公司范围的父母 pom

于 2013-03-20T10:57:05.453 回答