【Maven】007-Maven 工程的继承和聚合关系

【Maven】007-Maven 工程的继承和聚合关系

文章目录

一、Maven 工程的继承关系

1、继承的概念

父子工程!

Maven 支持工程之间的继承关系,其中一个工程可以作为另一个工程的父工程 。这种继承关系允许子工程继承父工程的配置、插件、依赖等信息,从而减少冗余配置,提高项目的可维护性。

2、继承的作用

在父工程中统一管理项目中的依赖信息。

它的背景是:

  • 对一个比较大型的项目进行了模块拆分。
  • 一个 project 下面,创建了很多个 module。
  • 每一个 module 都需要配置自己的依赖信息。

它背后的需求是:

  • 在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。
  • 使用同一个框架内的不同 jar 包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。
  • 使用框架时所需要的 jar 包组合(或者说依赖信息组合 )需要经过长期摸索和反复调试,最终确定一个可用组合 。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。

3、继承的语法

子工程pom.xml文件中,使用<parent>元素来声明父工程 。子工程通过这样的声明,就建立了与父工程的继承关系

以下是一个简单的例子:

xml 复制代码
<parent>
    <groupId>父工程的Group ID</groupId>
    <artifactId>父工程的Artifact ID</artifactId>
    <version>父工程的版本号</version>
</parent>

4、父工程统一管理依赖版本

父工程声明依赖版本

xml 复制代码
<!-- 使用 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>

子工程继承以来版本

xml 复制代码
<!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。  -->
<!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
<!-- 具体来说是由父工程的 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> 元素来声明子模块。父工程通过这样的声明,就建立了与子模块的聚合关系

以下是一个简单的例子:

xml 复制代码
<modules>
    <module>子模块1</module>
    <module>子模块2</module>
    <!-- 可以有更多的子模块 -->
</modules>

4、聚合构建图示

相关推荐
间彧21 分钟前
SimpleDateFormat既然不推荐使用,为什么java 8+中不删除此类
java
间彧27 分钟前
DateTimeFormatter相比SimpleDateFormat在性能上有何差异?
java
间彧39 分钟前
为什么说SimpleDateFormat是经典的线程不安全类
java
MacroZheng1 小时前
横空出世!MyBatis-Plus 同款 ES ORM 框架,用起来够优雅!
java·后端·elasticsearch
用户0332126663671 小时前
Java 查找并替换 Excel 中的数据:详细教程
java
间彧1 小时前
ThreadLocal实现原理与应用实践
java
若水不如远方2 小时前
Netty的四种零拷贝机制:深入原理与实战指南
java·netty
用户7493636848432 小时前
【开箱即用】一分钟使用java对接海外大模型gpt等对话模型,实现打字机效果
java
SimonKing2 小时前
一键开启!Spring Boot 的这些「魔法开关」@Enable*,你用对了吗?
java·后端·程序员
间彧3 小时前
Spring Boot集成Spring Security 6.x完整指南
java