编辑:我已经更改了这个问题,因此它不仅仅是Can maven projects have multiple parents?的副本(其答案似乎断言模块不能有2个父母) < / p>
问:Maven:多模块父项目的子模块可以在另一个完全独立的项目中使用吗?
考虑一个ChildCommon项目,它是一个API模块或许多项目共享的通用实现库。
至少有两种可能性:
案例1:如果允许2个父母(使用Maven 3.3.3):
ParentA
|--ChildCommon
ParentB
|--ChildCommon
案例2:完全独立的项目取决于2个父母,而不是直接取决于子模块:
ParentA
|--ChildCommon
ProjectB dependsOn ChildCommon [EDIT: ANSWER IS, YES, THIS WAY WORKS]
如果是这样的话,如果将ChildCommon模块的Maven构建规范的一部分被虹吸掉(上)到ParentA中,那么当ParentB或ProjectB使用它时,如何确保使用正确的Maven规范(无需从ParentA暴力重复的事情?)
[编辑:答案是Maven通过“外部”引用的孩子的父POM完美处理。]
编辑:扩展:我的目标是让我的POM Optimizing and Refactoring蛋糕使用父POM并吃掉它。我有一组6个核心模块,可以很好地实现我开发核心Web应用程序系统所需的模块化:
CoreLib, CoreAll, CoreImp, CoreAPI, CoreEJB, CoreWeb
CoreWeb作为独立的Web应用程序运行,也可以使用叠加层由其他Web应用程序重用。
我不会进入这里为什么我需要6,但实际上我的情况很优雅。然而,有时需要清理和构建每一个都是令人厌倦的。它也容易出错,在每个pom.xml中重复某些工件版本(我的主要关注点)。
特定的网络应用程序组合利用(至少部分)上述核心模块(包括CoreWeb):
SpecAPI, SpecEJB, SpecWeb
但是另一个应用程序(非网络应用程序)可能只利用CoreAll,CoreImp等核心应用程序的子集,并且在任何情况下都不会想要耦合到例如CoreWeb。