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