Maven【3】( 依赖的范围,传递性和依赖的排除)(命令行操作)

news2025/2/24 15:38:05

文章目录

  • 【1】依赖的范围
    • 结论
    • 验证
      • ①验证 compile 范围对 main 目录有效
      • ②验证test范围对main目录无效
      • ③验证test和provided范围不参与服务器部署
  • 【2】依赖的传递性
    • ①compile 范围:可以传递
    • ②test 或 provided 范围:不能传递
  • 【3】依赖的排除


【1】依赖的范围

结论

compile 和 test 对比:
在这里插入图片描述

compile 和 provided 对比:
在这里插入图片描述

验证

①验证 compile 范围对 main 目录有效

main目录下的类为HelloServlet,compile范围引入的依赖为:pro01-maven-java,pro01-maven-java中的类为:Calculator,我们只需验证main目录下的类为HelloServlet能否使用Calculator即可。只需要通过import将要测试的类引入当前类,引入后如果编译能通过,则说明可用,这个范围的依赖对当前类有效。
在这里插入图片描述
我们来编译一下。发现成功了,说明是没有问题的:
在这里插入图片描述

②验证test范围对main目录无效

test范围的依赖为junit
在这里插入图片描述
junit可以使用的注解为@Test,那还是跟上面一样的原理:
在这里插入图片描述
然后编译一下发现编译不能通过:
在这里插入图片描述

③验证test和provided范围不参与服务器部署

我们需要验证:通过compile范围依赖的jar包会放入war包,通过test和provided范围依赖的jar包不会放入war包。
在这里插入图片描述
然后我们打包一下看一下:
在这里插入图片描述
发现只有通过compile范围依赖的jar包会放入war包。

【2】依赖的传递性

结论:
在 A 依赖 B,B 依赖 C 的前提下,C 是否能够传递到 A,取决于 B 依赖 C 时使用的依赖范围。

B 依赖 C 时使用 compile 范围:可以传递
B 依赖 C 时使用 test 或 provided 范围:不能传递,所以需要这样的 jar 包时,就必须在需要的地方明确配置依赖才可以。

①compile 范围:可以传递

我们来测试一下:
测试方式:让 pro01-maven-java 工程依赖 spring-core

具体操作:编辑 pro01-maven-java 工程根目录下 pom.xml,加入这个依赖:

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-core</artifactId>
	<version>4.0.0.RELEASE</version>
</dependency>

然后使用 mvn dependency:tree 命令查看效果:
在这里插入图片描述
我们再来看一下这个依赖的pom文件:
在这里插入图片描述
所有当B 依赖 C 时如果使用 compile 范围,那么依赖是可以传递的。

②test 或 provided 范围:不能传递

在这里插入图片描述
我们可以看到pro01-maven-java 依赖了 junit,但是在 pro02-maven-web 工程中查看依赖树的时候并没有看到 junit,所以test范围不能传递。
在这里插入图片描述
要验证 provided 范围不能传递,可以在 pro01-maven-java 工程中加入 servlet-api 的依赖:

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
	<scope>provided</scope>
</dependency>

然后再查看pro02-maven-web 工程的依赖树,发现还是跟原来一样,并没有servlet-api这个依赖。

【3】依赖的排除

依赖排除就是:当 A 依赖 B,B 依赖 C 而且 C 可以传递到 A 的时候,A 不想要 C,需要在 A 里面把 C 排除掉。
依赖的排除目的就是为了避免架包的冲突。(架包的版本可能不一样)
在这里插入图片描述

所以配置依赖的排除其实就是阻止某些 jar 包的传递。因为这样的 jar 包传递过来会和其他 jar 包冲突。
我们来举个例子:
我们在 pro02-maven-web 工程中配置对 commons-logging 的排除。
先来看一下配置前的依赖:
在这里插入图片描述

配置方式:

<dependency>
	<groupId>com.atxiaoyu.maven</groupId>
	<artifactId>pro01-maven-java</artifactId>
	<version>1.0-SNAPSHOT</version>
	<scope>compile</scope>
	<!-- 使用excludes标签配置依赖的排除	-->
	<exclusions>
		<!-- 在exclude标签中配置一个具体的排除 -->
		<exclusion>
			<!-- 指定要排除的依赖的坐标(不需要写version) -->
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>

配置完成后再来查看一下依赖:
在这里插入图片描述

我们可以发现在 spring-core 下面就没有 commons-logging 了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用python爬取本站的所有博客链接

前因 由于自己要把csdn的博客同步到hugo中&#xff0c;把博客转为md格式已经搞好了&#xff0c;但是由于csdn的图片具有防盗链&#xff0c;所以打算把所有的图片爬取下来&#xff0c;然后保存在本地 刚好本人略懂一些python&#xff0c;所以自己先写了一个脚本用来爬取各个博…

【Acwing】差分矩阵

图1&#xff1a;a和b数组映射表 由于a是b的前缀和数组&#xff0c;因此改变b[ x1][ y1]之后&#xff0c;受到影响的a中元素如右半图所示 图2&#xff1a;求b数组的前缀和 #include<bits/stdc.h> using namespace std;int n,m,q; int a[1010][1010]; int b[1010][1010]…

最新 RubyMine 2023.3.4 下载与安装 + 永久免费

文章目录 Stage 1 : 官网下载Stage 2 : 下载工具Stage 3-1 : windows为例Stage 3-2 : mac为例常见问题部分小伙伴 Mac 系统执行脚本遇到如下错误&#xff1a;解决方法&#xff1a; 执行脚本做了啥&#xff1f;和正版区别&#xff1f; Stage 1 : 官网下载 先去官网下载 我这里下…

代码随想录算法训练营第二十四天补|● 回溯理论基础 ● 77. 组合

回溯理论基础、组合问题 回溯理论基础 回溯能解决的问题 回溯的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案 回溯如何穷举&#xff1a; 横向遍历for循环&#xff0c;纵向遍历backtracking&#xff08;递归&#xff09;&#xff0c;一般来说&#…

(2024,时空 trasnformer,时空视频分词器,自回归动力学模型,潜在行动模型)Genie:生成式交互环境

Genie: Generative Interactive Environments 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 方法 2.1. 模型组件 2.2. 推理&#xff1a;可控行动视频生成 3. 实验 0. …

数据库orclec;nvl和nvl2的区别

Oracle中nvl()与nvl2()函数详解-CSDN博客 select nvl(null,2) as vb from dual select nvl2(666,2,3) as vb from dual

异常处理(黑马学习笔记)

当前问题 登录功能和登录校验功能我们都实现了&#xff0c;下面我们学习下今天最后一块技术点&#xff1a;异常处理。首先我们先来看一下系统出现异常之后会发生什么现象&#xff0c;再来介绍异常处理的方案。 我们打开浏览器&#xff0c;访问系统中的新增部门操作&#xff0…

如何通过代理IP安全使用Linkedln领英?

LinkedIn是跨境外贸必备的拓客工具&#xff0c;世界各地的许多专业人士都使用领英来作为发布和共享内容的主要工具&#xff0c;这使得它成为跨境出海必备的渠道工具。 但是不少做外贸的朋友都知道&#xff0c;领英账号很容易遭遇限制封禁&#xff0c;但如果善用工具&#xff0…

倾囊相授之性能分析思路

年轻的时候&#xff0c;经常听一些大会或者演讲。有些人说&#xff0c;思路逻辑非常重要。我那时就想&#xff0c;你肯定是瞎忽悠的&#xff0c;因为我怎么就没听懂你说的思路呢&#xff1f; 而现在轮到自己来写或者讲一些东西的时候&#xff0c;才发现他们说得很对&#xff0…

数据分析中生成仪表板制作工具对比,零基础也能实现数据可视化!

#AI生成图表# 仪表板&#xff08;仪表盘&#xff09;在企业做任何数据分析的最后都会需要的&#xff0c;它通过图表、数字、图形和表格等视觉效果&#xff0c;将复杂的数据以直观、易懂的方式展示出来&#xff0c;帮助用户更好地理解数据&#xff0c;以及决策支持和作为一个共…

50kw 直流充电桩测试仪的操作和维护

一、操作步骤 1. 连接电源&#xff1a;将充电桩测试仪的电源线连接到符合规定的电源插座上&#xff0c;确保电源稳定。 2. 连接设备&#xff1a;将充电桩测试仪的测试接口与待测充电桩的充电接口连接&#xff0c;注意接口的对应关系&#xff0c;防止接错。 3. 开机检查&…

请查收:2024年腾讯云服务器优惠价格表_租用配置报价

一张表看懂腾讯云服务器租用优惠价格表&#xff0c;一目了然&#xff0c;腾讯云服务器分为轻量应用服务器和云服务器CVM&#xff0c;CPU内存配置从2核2G、2核4G、4核8G、8核16G、4核16G、8核32G、16核32G、16核64等配置可选&#xff0c;公网带宽1M、3M、5M、12M、18M、22M、28M…

二叉搜索树题目:把二叉搜索树转换为累加树

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;把二叉搜索树转换为累加树 出处&#xff1a;538. 把二叉搜索树转换为累加树 …

Vmware Esxi 部署Mac OS虚拟机

Vmware Esxi在创建虚拟机的时候是有Mac OS选项的&#xff0c;但是实际创建时&#xff0c;选择ISO开机后一直反复引导&#xff0c;是有问题的&#xff0c;原因是需要先解锁&#xff0c;需要在ESXI主机上修改配置并重启。 首先找到管理-服务-TSM-ssh&#xff0c;点击启动&#x…

并查集基础,死去的回忆突然攻击我

并查集普及【模板】并查集 - 洛谷 #include<iostream> #include<cstring> #include<queue> #include<vector> #include<algorithm> using namespace std; #define int long long typedef pair<int,int> PII; #define xx first #define y…

【已解决】c++如何从0配置ffmpeg

本博文源于笔者正在做的任务&#xff0c;将视频mp4每帧转换成jpg格式&#xff0c;前提是需要配置ffmpeg。因此本文从0下载教读者如何配置ffmpeg。 文章目录 1、百度搜索官网2、配置项目3、创建main.cpp测试库与包4、 总结 1、百度搜索官网 官网已经搜索到&#xff0c;我们要找…

ulimit命令

ulimit命令 ulimit 命令用于查看和设置 shell 运行时的资源限制。它可以控制各种资源&#xff0c;如文件打开数量、堆栈大小、CPU 时间等。ulimit 命令通常用于限制 shell 启动的进程的资源使用量&#xff0c;以防止系统资源被耗尽。ulimit命令的主要作用是提高系统的性能和稳…

【C++】类和对象之常引用与运算符重载

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 常引用3. 运算符重载 1. 前言 在之前的文章中提到了常引用&#xff0c;再来看运算符重载之前&#xff0c;先来看看常引用的使用。 2. 常引用 在使用引用的时候可…

西门子WINCC客户端提示“未找到启动画面”

WinCC客户端提示“未找到启动画面”&#xff1f; 在WinCC客户机服务器架构中&#xff0c;多用户客户机互连服务器项目时&#xff0c;有时会弹出“未找到启动画面”的提示对话框&#xff0c;并且选择画面后继续弹出该对话框&#xff0c;无法正常显示画面。 可能的原因有&#x…

DevEco Studio下载与安装(Windows)

下载地址&#xff1a; HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装时直接点击 next 即可。 运⾏已安装的DevEco Studio&#xff0c;⾸次使⽤&#xff0c;请选择Do not import settings&#xff0c;单击OK。 1.安装Node.js 如果本地有下载&#xff0c;可以…