Maven:多模块父项目的子模块可以用在另一个完全独立的项目中吗?

时间:2016-12-01 11:43:45

标签: maven multi-module

编辑:我已经更改了这个问题,因此它不仅仅是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。

0 个答案:

没有答案