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

006-MAVEN 的使用

MAVEN 的使用

  • 一、依赖范围
  • 二、依赖的传递性
  • 三、依赖的原则
  • 四、依赖的排除

一、依赖范围

在引入log4j 依赖的时候,有一个scope设置,这个scope设置的值就是对应的依赖范围(因为compile 是默认的依赖范围,所以有时也可以省略)。

Maven 提供了六种依赖的范围:compile、test、provided、runtime、system 和import。其中compile 是默认的依赖范围。这里主要对比前三种常用的依赖范围。

在这里插入图片描述
需要注意的是:
provided 范围依赖是不参与项目打包与部署的,比如 servlet-api,如果你把
scope改成compile 范围的依赖,就会因为jar 包冲突报错。原因是我们在启动web 项目时,tomcat 已经在启动时加载了自身的 servlet-api。

二、依赖的传递性

依赖的传递性是指:在A 中添加对B 的依赖,在B 中添加对C 的依赖,如果依赖范围是
compile 的,A 不仅会有B 的jar 包,也会有C 的jar 包。如果在C 中添加了某个依赖,那么根据传递性,A 和B 也可以使用 C 添加的依赖,而不需要自己再重新引入依赖。
在这里插入图片描述

三、依赖的原则

  • 最短路径优先原则:如果A 依赖于B,B 依赖于C,在B 和C 中同时有log4j 的依赖,并且这两个版本不一致,那么A 会根据最短路径原则,在A 中会传递过来B 的log4j版本。
    在这里插入图片描述

  • 路径相同先声明原则:如果在A 同时依赖于B 和C,B 和C 没有依赖关系,并且都有log4j 的依赖,且版本不一致,那么A 会引入在pom.xml 中先声明依赖的log4j 版本。
    在这里插入图片描述

四、依赖的排除

我们在当前工程中引入了A 的依赖,而A 同时有对B 的依赖,根据传递性我们知道,在当前工程中会自动引入对B 的依赖。其中B 可能是一个不稳定的版本,或者对当前的工程存在着不良的影响 。这时我们就可以在引入对A 依赖的同时排除对B 的依赖。

下面我们以spriing-core 为例,当我们在pom.xml中引入对spriing-core 的同时,会自动将commons-logging 的jar 包引入进来。如下所示:
在这里插入图片描述
假设这个commons-logging 是一个不稳定的版本(只是假设),我们希望在引入spriing-core 时排除commons-logging。这时我们可以使用exclusion来进行排除。
在这里插入图片描述

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

相关文章:

  • npm使用时报错:Could not retrieve https://npm.taobao.org/mirrors/node/index.json.
  • 软考中级网络工程师——高级配置
  • Leetcode 第 141 场双周赛题解
  • Linux性能调优,还可以从这些方面入手
  • STM32的独立看门狗定时器(IWDG)技术介绍
  • 自动化生成工作流?英伟达提出ComfyGen:通过LLM来匹配给定的文本提示与合适的工作流程
  • indicatorTree-v10练习(有问题)
  • python源码:指定麦克风/音响播放歌曲
  • 基于华为云智慧生活生态链设计的智能鱼缸
  • OJ-1015图像物体的边界
  • RAG 入门实践:从文档拆分到向量数据库与问答构建
  • 445: 选择问题
  • IP地址类型选择指南:动态IP、静态IP还是数据中心IP?
  • 基于Python flask的豆瓣电影可视化系统,豆瓣电影爬虫系统
  • 面试不是一场遭遇战
  • 【力扣 | SQL题 | 每日3题】力扣1795,1907,1398,602
  • centos7.9升级rockylinux8.8
  • C++初阶(三)---C++入门(下)
  • Linux--多路转接之epoll
  • 自动化工具Nico,从零开始干掉Appium,移动端自动化测试框架实现
  • Fast CRC32
  • 生成一个带有二维数据和对应标签的螺旋形数据集(非线性可分数据集)的代码解析
  • PHP unset() 函数的作用
  • 长篇故事可视化方法Story-Adapter:能够生成更高质量、更具细腻交互的故事图像,确保每一帧都能准确地传达故事情节。
  • C++基础面试题 | 什么是C++中的运算符重载?
  • 深入 IDEA 字节码世界:如何轻松查看 .class 文件?
  • NodeJS 利用代码生成工具编写GRPC
  • uni-app基础语法(一)
  • Linux:进程控制(三)——进程程序替换
  • LeetCode279:完全平方数