【问题标题】:Maven inheritance and aggregationMaven继承和聚合
【发布时间】:2012-12-08 09:28:39
【问题描述】:
我只是好奇,如果在同一个 maven 应用程序中同时使用继承和聚合会发生什么?
这是应用程序结构:
我的项目应用程序
现在,在应用程序的 pom.xml 中,我将 jar 和 war 项目声明为模块,同时来自两个模块的 pom 将应用程序 pom 声明为它们的父级。它在这里创造了某种冗余,不是吗?
这种情况的最佳解决方案是什么?
【问题讨论】:
标签:
java
maven
inheritance
aggregation
【解决方案1】:
这不是多余的。他们都做不同的事情。
如果你使用聚合(定义<modules>),你只需说要构建哪些项目,它的包类型是pom。
如果您继承(定义 <parent>),您将继承父 pom 的首选项。
见:
继承和聚合创建了一个很好的动态来通过单个高级 POM 控制构建。您经常会看到既是父项目又是聚合者的项目。例如,整个 maven 核心通过单个基础 POM org.apache.maven:maven 运行,因此构建 Maven 项目可以通过单个命令执行:mvn compile。但是,尽管 POM 项目、聚合器项目和父项目都不是同一个项目,但不应混淆。 POM 项目可以继承自——但不一定具有——它聚合的任何模块。相反,POM 项目可能会聚合不继承自它的项目。
更多信息here.