【Maven】007-Maven 工程的继承和聚合关系
文章目录
- 【Maven】007-Maven 工程的继承和聚合关系
- 一、Maven 工程的继承关系
- 1、继承的概念
- 2、继承的作用
- 3、继承的语法
- 4、父工程统一管理依赖版本
- 父工程声明依赖版本
- 子工程继承以来版本
- 二、Maven 工程的聚合关系
- 1、聚合的概念
- 2、聚合的作用
- 3、聚合的语法
- 4、聚合构建图示
一、Maven 工程的继承关系
1、继承的概念
父子工程!
Maven 支持工程之间的继承关系,其中一个工程可以作为另一个工程的父工程。这种继承关系允许子工程继承父工程的配置、插件、依赖等信息,从而减少冗余配置,提高项目的可维护性。
2、继承的作用
在父工程中统一管理项目中的依赖信息。
它的背景是:
- 对一个比较大型的项目进行了模块拆分。
- 一个 project 下面,创建了很多个 module。
- 每一个 module 都需要配置自己的依赖信息。
它背后的需求是:
- 在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。
- 使用同一个框架内的不同 jar 包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。
- 使用框架时所需要的 jar 包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。
3、继承的语法
在子工程的pom.xml
文件中,使用<parent>
元素来声明父工程。子工程通过这样的声明,就建立了与父工程的继承关系。
以下是一个简单的例子:
<parent>
<groupId>父工程的Group ID</groupId>
<artifactId>父工程的Artifact ID</artifactId>
<version>父工程的版本号</version>
</parent>
4、父工程统一管理依赖版本
父工程声明依赖版本
<!-- 使用 dependencyManagement 标签配置对依赖的管理 -->
<!-- 被管理的依赖并没有真正被引入到工程 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.0.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>6.0.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>6.0.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>6.0.10</version>
</dependency>
</dependencies>
</dependencyManagement>
子工程继承以来版本
<!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。 -->
<!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
<!-- 具体来说是由父工程的 dependencyManagement 来决定。 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
</dependencies>
二、Maven 工程的聚合关系
1、聚合的概念
Maven 聚合是指一个父工程包含了多个子模块,这些子模块可以是独立的 Maven 工程。这种关系允许在一个父工程中同时构建和管理多个相关联的子模块,形成一个整体的项目。
2、聚合的作用
- 统一构建: 通过聚合,可以一次性构建整个项目,而不必逐个构建每个子模块。
- 依赖管理: 父工程可以定义依赖关系,子模块则可以继承这些依赖关系,确保整个项目中的依赖版本一致。
- 模块化管理: 将一个大型项目拆分成多个独立的子模块,有助于代码的组织和维护。
3、聚合的语法
在父工程的 pom.xml
文件中,使用 <modules>
元素来声明子模块。父工程通过这样的声明,就建立了与子模块的聚合关系。
以下是一个简单的例子:
<modules>
<module>子模块1</module>
<module>子模块2</module>
<!-- 可以有更多的子模块 -->
</modules>