Maven继承和聚合

Posted

技术标签:

【中文标题】Maven继承和聚合【英文标题】:Maven inheritance and aggregation 【发布时间】:2012-12-08 09:28:39 【问题描述】:

我只是好奇,如果在同一个 maven 应用程序中同时使用继承和聚合会发生什么? 这是应用程序结构:

我的项目应用程序

我的项目罐子 我的项目战争

现在,在应用程序的 pom.xml 中,我将 jar 和 war 项目声明为模块,同时来自两个模块的 pom 将应用程序 pom 声明为它们的父级。它在这里创造了某种冗余,不是吗?

这种情况的最佳解决方案是什么?

【问题讨论】:

【参考方案1】:

这不是多余的。他们都做不同的事情。

如果你使用聚合(定义<modules>),你只需说要构建哪些项目,它的包类型是pom

如果您继承(定义 <parent>),您将继承父 pom 的首选项。

见:

继承和聚合创建了一个很好的动态来通过单个高级 POM 控制构建。您经常会看到既是父项目又是聚合者的项目。例如,整个 maven 核心通过单个基础 POM org.apache.maven:maven 运行,因此构建 Maven 项目可以通过单个命令执行:mvn compile。但是,尽管 POM 项目、聚合器项目和父项目都不是同一个项目,但不应混淆。 POM 项目可以继承自——但不一定具有——它聚合的任何模块。相反,POM 项目可能会聚合不继承自它的项目。

更多信息here.

【讨论】:

以上是关于Maven继承和聚合的主要内容,如果未能解决你的问题,请参考以下文章

maven-聚合和继承

maven-聚合和继承

maven-聚合与继承

Maven继承和聚合

Maven高级:聚合和继承

maven之详解继承与聚合