Maven中的聚合和继承有以下主要区别:
聚合:将多个模块(模块可以是项目或子模块)联合在一个父工程下进行统一构建。聚合的模块之间可以没有任何依赖关系。
- 使用标签声明要聚合的模块。
- 聚合的模块可以有自己独立的pom.xml。
- 聚合构建后,各个模块生成独立的jar包。
继承:子项目的pom.xml继承父项目的pom.xml,这样子项目就可以继承父项目的依赖、插件配置等信息。子项目与父项目存在依赖关系。
- 使用标签声明要继承的父项目。
- 继承后,子项目的pom相对简单,只需声明与父项目不同的配置。
- 继承构建后,子项目与父项目的代码被打包在同一个jar包中。
例如:
聚合:
父项目pom.xml
<modules>
<module>module1</module>
<module>module2</module>
</modules>
各模块有自己的pom.xml,构建后分别生成module1.jar和module2.jar。
继承:
父项目pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
</dependencyManagement>
子项目pom.xml
<parent>
<artifactId>parent</artifactId>
<groupId>com.example</groupId>
<version>1.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
子项目继承父项目的依赖声明,构建后被打包在同一个jar中。