Maven亲子关系

时间:2013-03-20 10:48:33

标签: java maven

我在maven父子关系中遇到了以下“模式”: Relation ship example http://yuml.me/3f8dd366

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

子模块怎么也不知道这个父级知道它们,并且他们认为他们的父级是名为“父级的依赖关系管理”。它有常见的配置,如依赖管理,插件配置,常见属性等。

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

3 个答案:

答案 0 :(得分:10)

要看一个有趣的事情是聚合器pom。

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

拥有父节点pom和聚合器pom是maven的强大功能。

您可以找到更多信息here

This maven page也对如何为复杂项目设置pom提供了宝贵的见解。

答案 1 :(得分:8)

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

enter image description here

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

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

使用此配置时?

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

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

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

  • 少混淆
  • 干净且易读的<modules><parent>部分(无需使用丑陋的相对路径来指定子模块
  • 你可以在SCM下以干净的层次结构组织你的模块(这样maven-release-plugin会很开心)(我知道eclipse不喜欢分层项目,但这是另一个问题)

答案 2 :(得分:0)

这实际上有一个公司范围的配置pom,它不关心它的子项,包含属性,依赖管理,存储库,插件管理等所有它们都将继承的东西

也许这可以帮到你:Company wide parent pom