maven依赖设置

news/2024/10/30 9:22:47/

之前说过了可以通过依赖的方式将一个大程序分为多个小的模块,模块之间可以利用依赖链接在一起。
但是如果有多个依赖的情况下会怎么样呢?
在这里插入图片描述
A依赖于B、C,而B、C又有各自的依赖,那么A是否依赖于B、C的依赖呢?
答案是是的,因为具有依赖传递的特性。

那么如果传递依赖中出现了包版本依赖冲突的问题,算那个包呢?
情况一:特殊优先:在一个pom.xml中添加两个不同版本的Junit依赖:后配置的覆盖先配置的。
情况二:路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。

  • A通过B间接依赖到E1、通过C间接依赖到E2,A就会间接依赖到E1和E2,Maven会按照层级来选择,E1是2度,E2是3度,所以最终会选择E1。

情况三:声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。

  • A通过B间接依赖到D1、通过C间接依赖到D2,D1和D2都是两度,这个时候就不能按照层级来选择,需要按照声明来,谁先声明用谁,也就是说B在C之前声明,这个时候使用的是D1,反之则为D2。

如果想更全面的查看Maven中各个坐标的依赖关系,可以点击Maven面板中的show Dependencies
在这里插入图片描述
在这里插入图片描述
如果出于某些原因,我不想使用传递依赖下的某个包,怎么办呢?

方法一:可选依赖

  • 可选依赖指对外隐藏当前所依赖的资源—不透明
<dependency><groupId>com.itheima</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version><!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递--><optional>true</optional>
</dependency>

方法二:排除依赖

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
<dependency><groupId>com.itheima</groupId><artifactId>maven_04_dao</artifactId><version>1.0-SNAPSHOT</version><!--排除依赖是隐藏当前资源对应的依赖关系--><exclusions><exclusion><groupId>com.itheima</groupId><artifactId>maven_03_pojo</artifactId></exclusion></exclusions>
</dependency>

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

相关文章

纯净版ISO镜像下载大全(Windows、Linux、mac)

目录 一、前言介绍 前言必读 介绍 二、获取ISO镜像方式 &#xff08;一&#xff09;官方镜像下载 &#xff08;二&#xff09;看评论区获取下载 回复内容&#xff08;都是小写&#xff09; Windows操作系统 1.windows XP系统 2.Windows 7系统 3.Windows10系统 4.W…

列表元素的最大值,最小值,出现的次数和列表长度

1 获取列表中的最大元素和最小元素&#xff1a; 使用max和min可以分别获取一个列表中最大元素和最小元素的值&#xff0c;其语法格式为&#xff1a; max(list) 和min(list) 例&#xff1a;ls[12,34,56,87]#创建列表并赋给ls print(ls中最大元素值为&#xff1a;max(ls))#输出…

基于迁移学习的人脸识别实战(完整代码+数据)

迁移学习概述 想给家里的小八爪机器人加上人脸识别功能,比如瞄准的是我时就不能发射炮弹,这样儿子就没法拿这个怪物打我了。。。(也可以在工位上加个摄像头,领导来了提前报警。。。) 人脸识别跟普通的图像识别还是有相似的地方,比如都是图像 cnn 卷积池化;但也有很多不同…

蓝桥杯 stm32 实现 ADC 采集数据功能 CubeMX

文章内的代码使用 HAL 库。 ADC 即 模数转换器&#xff0c;是指 将 连续变化的模拟信号 转换成 离散的数字信号 的器件。 文章目录前言一、ADC 原理图二、CubeMX 配置三、ADC 代码讲解总结前言 一、ADC 原理图 从原理图我们可以看到 STM32G431 内部集成 两个 最高位 12 位 的 A…

【计算机体系结构-01】指令集体系结构、微体系结构简介

1. “虚拟” to “现实” 首先可以看这张图片&#xff0c;下面的 Physics 所指的是我们的物理世界中看得见摸得到或者是客观存在的事物&#xff0c;而人类希望将自己的工作内容或者需求以某种方式映射到物理层面上&#xff0c;用物理变化带来的影响来完成人类工作内容。例如早期…

【高并发内存池】第一弹之定长内存池

#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<vector> #include<time.h> using std::cout; using std::endl;#ifdef _WIN32#include<windows.h> #else // #endif// 直接去堆上按页申请空间 inline static void* SystemAlloc(size_t…

【linux kernel】Linux设备驱动模型 | bus

文章目录一、导读二、与总线相关的数据结构&#xff08;2-1&#xff09;struct bus_type&#xff08;2-2&#xff09;struct subsys_private三、总线的初始化四、总线的操作接口&#xff08;4-1&#xff09;总线的注册&#xff08;4-2&#xff09;总线的注销&#xff08;4-3&am…

AppScan介绍和安装

第一节-AppScan介绍和安装 1.简介 Appscan 10中文版是是全新网络安全漏洞扫描软件&#xff0c;软件可以直接可以对OS命令、SSRF和XXE攻击等漏洞进行检测&#xff0c;使得漏洞检测更加容易&#xff0c;提高漏洞的扫描效率。软件同时支持动态、静态、互动分析三种不同的测试功能…