Java Maven继承和聚合

Java Maven继承和聚合,java,maven,inheritance,aggregation,Java,Maven,Inheritance,Aggregation,我只是好奇,如果在同一个maven应用程序中同时使用继承和聚合,会发生什么? 这是应用程序结构: 我的项目应用程序 我的项目jar 我的战争计划 现在,在app的pom.xml中,我将jar和war项目声明为模块,同时来自两个模块的pom将app pom声明为它们的父级。这是在制造某种冗余,不是吗 对于这种情况,最好的解决方案是什么?它不是多余的。他们做两种不同的事情 如果您定义了(聚合),您只需要说,必须构建哪些项目以及它的包类型是pom 如果继承,则将通过定义来继承父pom的首选项 见:

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

我的项目应用程序

  • 我的项目jar
  • 我的战争计划
现在,在app的pom.xml中,我将jar和war项目声明为模块,同时来自两个模块的pom将app pom声明为它们的父级。这是在制造某种冗余,不是吗


对于这种情况,最好的解决方案是什么?

它不是多余的。他们做两种不同的事情

如果您定义了
(聚合),您只需要说,必须构建哪些项目以及它的包类型是
pom

如果继承,则将通过定义
来继承父pom的首选项

见:

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


更多信息。

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

如果您定义了
(聚合),您只需要说,必须构建哪些项目以及它的包类型是
pom

如果继承,则将通过定义
来继承父pom的首选项

见:

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

更多信息