Maven 之 依赖管理

news/2024/11/21 1:31:05/

目录

1、依赖传递

小案例:

2、可选依赖

3、 排除依赖

4、可选依赖和排除依赖的区别


 

我们开发一个工程需要用到大量得jar包,而这些jar 包就是我们所说得依赖,一个项目可以配置多个依赖。

1、依赖传递

我们来看一下今天用来演示的工程。

这个工程它运行需要用到这么多的依赖!

首先依赖,它可以设置多个,那么在设置的时候,我们就会发现一些小问题,我们会发现上图中,有些依赖它是有小箭头的,而有些它是没有的。

那这个箭头又代表了什么呢?这说明这个依赖它又依赖了别的东西。

小案例:

小案例:

ssm

ssm_01_pojo

我们可以看到ssm 和 ssm_01_pojo 都引入 ssm_02_dao。

ssm_02_dao 里面是什么东西呢?

接下我们将 ssm 的 pom 文件 中 的 ssm_02_dao 注释掉。

我们再来看看有没有影响。

这里我们看到,它是没有报错的,为什么呢?

因为我们的依赖具有传递性,虽然我们的ssm 将ssm_02_dao 注释掉了,但是 ssm_01_pojo 也导入了 ssm_02_dao,这就是依赖的传递性。

依赖的传递性也分为三种。

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

直接依赖就是我们直接写的依赖,间接依赖就是我们写的依赖又依赖的其他的依赖。

接下来我们来讲一下特殊优先。

这里我们要了解一下说明是依赖冲突,这个问题很常见,比如 我们 都用mybatis ,你用 2.0 我用 3.0 ,这不就冲突了,那到底要用谁的呢?

这里我们用一个小案例演示一下。

上面我配置两个junit 的版本 ,右边它显示的 依赖版本是 4.10。这会不会跟位置有关系,我们将它们两个交换 一下位置。

发现,它们还真的变了,这个就说明了,当我们同一个依赖写了两个版本,它会以最后一个为准。

2、可选依赖

现在呢,我们已经知道了,依赖是有传递性的,那现在就有一个问题,我现在开发了一个模块,里面依赖了一些东西,现在呢你想用我的东西,但是我现在不想让你知道 我依赖了哪些东西,我想把这些东西隐藏起来。

为什么要这样呢?

比如,我现在用的mybatis用的是2.0版本,但是你用的是3.0 的版本,那这不就又版本冲突的问题了,所以干脆,你那里用啥我不管,但是我这里用啥隐藏起来,你那里看不到,这样不就没有冲突了。

案例:

那这个东西怎么设置呢?其实很简单。

就是这个<optional></optional>标签。

 

true 就是隐藏 反之就是不隐藏。

我们看这个 TeacherImpl 是不是就报错了。

3、 排除依赖

排除依赖跟可选依赖优点相似,可选依赖是自己隐藏,不对外公布。

排除依赖就是,我导入了你的依赖,而你的依赖中有写依赖是我不想要的,这个时候我就可以使用排除依赖进行排除。

我往下看看这个排除依赖如何使用。

案例 :

4、可选依赖和排除依赖的区别

若有收获,就点个赞吧

 


http://www.ppmy.cn/news/8634.html

相关文章

微信小程序介绍

目录 1.什么是小程序&#xff1f; 2.小程序可以干什么&#xff1f; 2&#xff0c;1.相关资料 2.2.申请微信小程序测试账号 3. 开发一个demo 3.1 创建项目 3.2 配置 3.3 常用框架 3.4 目录结构说明 目录结构 小程序代码构成 JSON 配置 小程序配置 app.json 工具配…

Linux权限及其理解

文章目录&#xff1a;Linux权限的概念Linux权限管理文件访问者的分类&#xff08;人&#xff09;文件类型和访问权限&#xff08;事物属性&#xff09;文件权限值的表示方法文件访问权限的设置方法权限掩码目录的权限粘滞位总结Linux权限的概念 与其它系统相比&#xff0c;Lin…

ZC706P+ADRV9009连接RADIOVERSE详解之三

做好SD卡映像&#xff0c;连接好硬件之后&#xff0c;我们就可以尝试软件操作了。 步骤1&#xff1a;设置好网络 打开软件界面我们看到&#xff0c;板子默认的地址为192.168.1.10 端口号为55555.我们一定也设置跟板子连接的以太网口处于192.168.1网段&#xff0c;并且子网掩码…

机器学习--数据清理、数据变换、特征工程

目录 一、数据清理 二、数据变换 三、特征工程 四、总结 一、数据清理 数据清理是提升数据的质量的一种方式。 数据不干净&#xff08;噪声多&#xff09;&#xff1f; 需要做数据的清理&#xff0c;将错误的信息纠正过来&#xff1b; 数据比较干净&#xff08;数据不是…

【北京理工大学-Python 数据分析-1.1】

数据维度 维度&#xff1a;一组数据的组织形式 一维数据&#xff1a;由对等关系的有序或无序数据构成&#xff0c;采用线性组织形式。包括列表、集合和数组&#xff08;python中不常见&#xff0c;但在C和Java中比较常见&#xff09;类型。 列表&#xff1a;数据类型可以不同…

【免费开放源码】审批类小程序项目实战(预约审批端)

第一节&#xff1a;什么构成了微信小程序、创建一个自己的小程序 第二节&#xff1a;微信开发者工具使用教程 第三节&#xff1a;深入了解并掌握小程序核心组件 第四节&#xff1a;初始化云函数和数据库 第五节&#xff1a;云数据库的增删改查 第六节&#xff1a;项目大纲以及制…

【Python应用】tkinter简介

简介 tkinter是Python自带的GUI库。 tkinter的全称是Tk Interface。 其中Tk是开发桌面应用的GUI工具库&#xff0c;它是Tcl的标准GUI&#xff0c;而Tcl全称Tool Command Language&#xff0c;是一种动态编程语言&#xff0c;可用于桌面应用开发。关于Tk和Tcl&#xff0c;可以…

记忆化搜索—— 滑雪[洛谷]

记忆化搜索—— 滑雪一、[SHOI2002] 滑雪题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示二、暴力DFS的缺陷三、记忆化搜索记忆化数组DFS1、分析2、代码一、[SHOI2002] 滑雪 [SHOI2002] 滑雪&#xff08;洛谷&#xff09; 题目描述 Michael 喜欢滑雪。这并不奇怪…