依赖冲突解决|学习笔记

简介: 快速学习依赖冲突解决

开发者学堂课程【项目管理工具Maven学习:依赖冲突解决】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/23


依赖冲突与解决


什么是依赖冲突

依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突

依赖冲突的原因

依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突

如何解决依赖冲突

首先查看产生依赖冲突的类jar,其次找出我们不想要的依赖类jar,手工将其排除在外就可以了。具体执行步骤如下:

1、查看依赖冲突

2、解决冲突

3、锁定版本

1、初始化失败是由于反射生成这个Javassist引起的,想要解决这个问题首先需要去改变user-dao下的build path

image.png

需要先把1.5的包删掉,再把它改成1.7在进行测试image.png

发现在运行系统中没有javassist这个包,那现在就需要把javassit配置到运行系统当中去,需要去找一下版本

image.png

把这个javassit配置到运行系统当中去,此刻显示运行成功了。

综上就是maven如何排查依赖冲突以及解决方法,对于排查依赖个人比较推荐使用maven helper插件,至于解决依赖冲突个人推荐使用版本锁定的方法,此外dependencyManagement只是声明依赖,并不自动实现引入,因此子项目需要显示的声明需要用的依赖。

二、依赖范围

首先需要知道,Maven在编译项目主代码的时候需要使用一套classpath。比如:编译项目代码的时候需要用到spring-core,该文件以依赖的方式被引入到classpath 中。其次,Maven 在执行测试的时候会使用另外一套classpath。如:junito

最后在实际运行项目时,又会使用一套classpath,spring-core需要在该classpath中,而junit不需要。

所以依赖范围就是用来控制依赖与这三种classpath(编译classpath,测试classpath,运行时classpath)的关系,Maven有以下几种依赖范围:

1.Compile编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译,测试,运行都有效。

2.Test:测试依赖范围。只在测试的时候需要。比如junit

3.Provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试有效,但在运行时无效。典型的例子是servet-API,编译和测试项目的需要,但在运行项目时,由于容器已经提供,就不需要Maven重复地引入一遍。

4.Runtime:运行时依赖范围。使用此依赖范围的Maven依赖,对于测试和运行有效,但在编译代码时无效。典型的例子是:jdbe驱动程序,项目主代码的编译只需要jdk提供的idbe接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体jdbc驱动。

5.System:系统依赖范围。一般不使用。

三、传递性依赖

传递依赖机制,让我们在使用某个a的时候就不用去考虚它依赖了什么。也不用担心引入多余的依赖。Maven 会解析各个直接依赖的POM,将那些心要的间接依赖,以传递性依赖的形式引)到当前项目中。

注意:传递依赖有可能产生冲突!!

冲突场景1:A--》B---》C(1.0)

A--》E--》C(2.0)

如果A下同时存在两个不同version的c,冲突!!

解决方法:第一声明者优先

image.png

四、排除依赖

image.png

在想排除一个范围的时候需要写groupID和artifactID就可以了。

相关文章
|
存储 人工智能 前端开发
【利用AI刷面试题】50道前端基础面试题(一)
【利用AI刷面试题】50道前端基础面试题
|
安全 网络安全 Python
Python建立SSH连接与使用方法
paramiko是一个Python实现的SSH协议库,可以用来建立SSH连接、传输文件等。你可以在Python环境中使用pipan
Python建立SSH连接与使用方法
|
Kubernetes 容器 Linux
Centos7更换163镜像源安装kubernetes
kubernetes 镜像源 centos7
5535 0
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1065 151
|
4天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1739 9