【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、聚合构建图示

相关推荐
雾喔12 分钟前
算法练习7
java·数据结构·算法
掉鱼的猫40 分钟前
跳出 Fatjar 的束缚:Solon 插件的体外扩展(E-Spi)与热插拔(H-Spi)
java
Bill FANG1 小时前
从原生Java NIO到Netty重构:充电桩Socket服务端高性能改造实战
java·重构·nio
2601_955759411 小时前
Claude API 成本审计:该看哪些指标,怎么分析更靠谱
java
带刺的坐椅1 小时前
跳出 Fatjar 的束缚:Solon 插件的体外扩展(E-Spi)与热插拔(H-Spi)
java·jar·solon·plugin·fatjar
宁之明起(B服)2 小时前
Java 反序列化漏洞-xmldecoder/SnakeYAM
java·开发语言
禾高网络2 小时前
开启环保新潮流:回收小程序系统功能介绍
java·大数据·小程序
deviant-ART2 小时前
java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException
java·开发语言
jjjava2.03 小时前
MyBatis动态if/trim/where/set标签详解
java·开发语言·数据库
gugucoding3 小时前
34.【Java】I/O流(下):NIO与文件操作
java·python·nio