Maven中的聚合和继承有什么区别?

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中。