Maven 2 拆分聚合器和父项目的好处是什么?
我已经读到,将聚合器项目(包含所有模块声明的项目)从父/依赖项项目(包含所有共享或公共依赖项的项目)中分离出来,这应该是一个好主意。因此,父项目不是您用来进行完整构建的项目Maven 2 拆分聚合器和父项目的好处是什么?,maven-2,Maven 2,我已经读到,将聚合器项目(包含所有模块声明的项目)从父/依赖项项目(包含所有共享或公共依赖项的项目)中分离出来,这应该是一个好主意。因此,父项目不是您用来进行完整构建的项目 为什么会这样?聚合器项目通常会以某种方式打包所有依赖项目(例如,作为J2EE EAR或WAR归档,或作为分发压缩),这要求首先构建所有依赖项目 但是,必须在其子项目之前构建父POM 如果父项目也是聚合器,则存在循环依赖关系: 聚合器依赖于子依赖项,子依赖项依赖于聚合器父级 在我们的构建系统中,我们通过拥有一个父POM文件来解
为什么会这样?聚合器项目通常会以某种方式打包所有依赖项目(例如,作为J2EE EAR或WAR归档,或作为分发压缩),这要求首先构建所有依赖项目 但是,必须在其子项目之前构建父POM 如果父项目也是聚合器,则存在循环依赖关系: 聚合器依赖于子依赖项,子依赖项依赖于聚合器父级
在我们的构建系统中,我们通过拥有一个父POM文件来解决这个问题,这个父POM文件也是它的子文件的反应器。其中一个子项是聚合器,它依赖于其他子项并创建分发工件。Maven依赖项解析允许我们构建顶级pom,它以正确的顺序对所有子项进行反应,聚合器项目位于最后。在大型环境中,您可能希望有定义项目类常见行为的父项(例如servlet父项、portlet父项、war父项等)。因为Maven中没有多重继承,所以您要么拥有一个巨大的父POM,其中包含所有这些内容和一些复杂的概要约定,要么拥有多个父POM,每种类型的项目一个父POM 类似的项目不一定是一起构建的(事实上通常不是这样)。因此,要为单个版本构建项目,您需要一个定义要构建的相关模块的聚合器
中有一节描述了聚合和继承之间的区别。这可能有助于您的理解。您能将链接发布到您阅读此文章的地方吗?我似乎再也找不到了。正如我所记得的,这只是JIRA问题,该项目的开发人员将其父项目(也声明了模块)拆分,因此一个项目只有模块,父项目只有依赖项。给出的理由是为了使多模块配置更容易或更容易。抱歉,我不能说得更具体了,我只是想知道。聚合器声明模块是完全有效的,这与引入依赖项不同,也不引入循环。有几个项目正是这样做的(例如)。您将只引入聚合器/父级声明子级依赖关系的循环。