2009-07-09 57 views
3

我读过,从父/依赖项目(具有所有共享或通用依赖关系的项目)中分离出一个聚合器项目(包含所有模块声明的项目)应该是一个好主意。因此,父项目不是您用来完成构建的项目。拆分聚合器和父项目的好处是什么?

这是为什么?

+0

你能张贴链接到你读的地方吗? – 2009-07-09 19:19:14

+0

我似乎无法再找到它。我记得刚刚发生的JIRA问题,该项目的开发人员正在将其父项目(也包含已声明的模块)分离,以便一个项目只包含模块,而父项目仅具有相关性。给出的理由是为了让多模块配置更简单些。对不起,我不能更具体 - 我只是想知道。 – aberrant80 2009-07-10 03:09:19

回答

-1

聚合器项目通常以某种方式打包所有依赖项目(例如,作为J2EE EAR或WAR存档或作为分发ZIP),这需要构建所有依赖项目第一个

但是,父POM必须在其子项目之前构建。

如果父项目也是聚集,那么你有一个循环依赖:

聚集取决于孩子的依赖性,这取决于聚合母体。

在我们的构建系统中,我们通过拥有一个父POM文件来解决这个问题,这个文件也是反应器化子元素。其中一个孩子是一个聚合器,它依赖于其他孩子并创建分配工件。 Maven依赖关系解决方案允许我们构建顶级pom,该集合器项目最后以正确顺序反应所有孩子。

2

在一个大的环境中,您可能希望父母能够定义项目类别(例如,servlet父项,portlet父项,战争父项等)的常见行为。因为Maven中没有多重继承,所以您必须拥有一个庞大的父POM,其中包含所有这些内容以及一些复杂的配置文件约定,或者多个父母,每种类型的项目都有一个。

类似的项目不一定是建在一起(实际上通常不是)。要为单个版本构建项目,您需要一个定义要构建的相关模块的聚合器。

有一部分Maven book描述了聚合和继承之间的区别。这可能有助于你的理解。