我在maven父子关系中遇到了以下“模式”: http://yuml.me/3f8dd366
在这个例子中,我们有一个带有2个子模块的模块。该模块有一个父pom“用于构建模块的父”,它知道这两个子模块是它的子项。
子模块怎么也不知道这个父级知道它们,并且他们认为他们的父级是名为“父级的依赖关系管理”。它有常见的配置,如依赖管理,插件配置,常见属性等。
我的问题:
这是一个“好”的模式吗?意思是它有优点/缺点,因为看似更直观的孩子< - >父母关系模式
答案 0 :(得分:10)
要看一个有趣的事情是聚合器pom。
这是一个按模块分组的pom,没有“父子关系”。聚合器pom没有依赖关系管理。它只管理构建。
拥有父节点pom和聚合器pom是maven的强大功能。
您可以找到更多信息here。
This maven page也对如何为复杂项目设置pom提供了宝贵的见解。
答案 1 :(得分:8)
这种组织模块的方式可能会让很多开发人员感到困惑,但这是一种合法的做事方式。
无论如何,我不推荐这种方法,因为它令人困惑。但有时候,他们别无选择。
使用此配置时?
子模块中的一个(或多个)已经有一个父级(即在另一个项目中开发但你需要重建它)。请注意,多模块项目中的<module>
条目是一个相对路径,因此您可以使用以下内容:
<modules>
<module>../../somedir/othermodule</module>
...
</modules>
如果可能,我建议将多模块也用作父,因为:
<modules>
和<parent>
部分(无需使用丑陋的相对路径来指定父或子模块)答案 2 :(得分:0)
这实际上有一个公司范围的配置pom,它不关心它的子项,包含属性,依赖管理,存储库,插件管理等所有它们都将继承的东西
也许这可以帮到你:Company wide parent pom