当前位置: 首页 > news >正文

Maven中的继承与聚合

一,继承

  • 前面我们将项目拆分成各个小模块,但是每个小模块中有很多相同的依赖
  • 于是我们创建一个父工程将模块中相同的依赖定义在父工程中,然后子工程继承父工程
  • Maven作用:简化依赖配置,统一依赖管理,可以实现多重继承像Java一样
  • 实现:<parent></parent>

1,继承的实现

一>父工程

创建父工程,设置打包方式为pom(<packaging>)

设置坐标信息

让父工程继承

<!--    父工程-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.5</version><relativePath/> <!-- lookup parent from repository ///从本地仓库查找父工程-->
</parent>

设置打包方式

<!----><groupId>com.itheima</groupId><artifactId>tlias-parent</artifactId><version>1.0-SNAPSHOT</version>
<!--    设置打包方式--><packaging>pom</packaging>

父工程删掉src----因为我们只需要设置依赖不需要编写任何代码

三> 子工程

在子工程中的pom文件中继承父工程,父工程的坐标

然后再子工程pom文件中--<relativePath>是父工程的相对路径

四>再父工程pom文件中引入子工程中共有的依赖,如果父子工程都引入了相同的依赖以子工程的为准

2,继承版本的锁定 

一,在maven中,可以在父工程的pom文件中通过 <dependencyManagement> 来统一管理依赖版本。

<!--统一管理依赖版本-->
<dependencyManagement><dependencies><!--JWT令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency></dependencies>
</dependencyManagement>

二,然后在子工程中的<dependencies>引入依赖就可以,但是无序设置版本号

子工程依赖的版本是由父工程中<dependencyManagement>来管理的,如果想要修改只需要在父工程中<dependencyManagement>修改就可以

<dependencies><!--JWT令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId></dependency>
</dependencies>

三,在父工程中集中管理

1,自定义属性将依赖的版本统一放入properties标签中进行统一管理

<properties><lombok.version>1.18.24</lombok.version>
</properties>

2,在pom文件中<version>${lombok.version}</version>引入版本号

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version>
</dependency>

  • <dependencies> 是直接依赖,在父工程配置了依赖,子工程会直接继承下来。

  • <dependencyManagement> 是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

二,聚合 

  • 聚合:将多个模块组织成一个整体,同时进行项目的构建。

  • 聚合工程:一个不具有业务功能的“空”工程(有且仅有一个pom文件) 【PS:一般来说,继承关系中的父工程与聚合关系中的聚合工程是同一个】

  • 作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)

1,实现聚合()

一,在 父工程中的pom文件中 写入子工程的相对路径

<!--聚合其他模块-->
<modules><module>../tlias-pojo</module><module>../tlias-utils</module><module>../tlias-web-management</module>
</modules>

三,继承与聚合

 

  • 作用

    • 聚合用于快速构建项目

    • 继承用于简化依赖配置、统一管理依赖

  • 相同点:

    • 聚合与继承的pom.xml文件打包方式均为pom,通常将两种关系制作到同一个pom文件中

    • 聚合与继承均属于设计型模块,并无实际的模块内容

  • 不同点:

    • 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些

    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

http://www.lryc.cn/news/223076.html

相关文章:

  • 第三章 UI开发的点点滴滴
  • 637. 二叉树的层平均值
  • 【Java笔试强训】Day9(CM72 另类加法、HJ91 走方格的方案数)
  • django REST框架- Django-ninja
  • 数据结构与算法C语言版学习笔记(3)-线性表的链式结构:链表
  • Web学习笔记-Vue3(环境配置、概念、整体布局设计)
  • 【React-Native开发3D应用】React Native加载GLB格式3D模型并打包至Android手机端
  • python的列表
  • [100天算法】-最短无序连续子数组(day 66)
  • 001. 变量、环境变量
  • 软考软件设计师刷题笔记整理
  • Canal
  • SpringBoot实现mysql与clickhouse多数据源
  • 为什么是LangChain?
  • Labview的分支判断
  • 蓝桥杯双周赛算法心得——串门(双链表数组+双dfs)
  • mysql 配置主从复制 及 Slave_SQL_Running = no问题排查
  • 再获5G RedCap能力认证!宏电5G RedCap工业智能网关通过中国联通5G物联网OPENLAB开放实验室测试验证
  • 牛客--汽水瓶python
  • TSINGSEE智能分析网关V4车辆结构化数据检测算法及车辆布控
  • git解决冲突的方法。
  • [MT8766][Android12] 取消WIFI热点超过10分钟没有连接自动关闭设定
  • 智能中仍存在着许多未被发现的逻辑
  • 基于公共业务提取的架构演进——外部依赖防腐篇
  • uniapp小程序接入腾讯云【增强版人脸核身接入】
  • Sass 最基础的语法
  • 2023年11月数据库流行度最新排名
  • JavaEE-部署项目到服务器
  • 计算机网络期末复习-Part1
  • Redis系列-Redis过期策略以及内存淘汰机制【6】