论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
排查maven 冲突及办理方式
排查maven 冲突及办理方式
吴旭华
论坛元老
|
2024-9-27 09:01:43
|
显示全部楼层
|
阅读模式
楼主
主题
1930
|
帖子
1930
|
积分
5790
Maven
Maven 是一个以项目为中央的自动化构建工具,主要用于Java项目的管理和构建。它提供了一种统一的方式来描述项目的结构、依赖关系和构建过程,简化了项目的构建和管理。
Maven 的主要特点:
项目对象模子(POM)
:Maven 使用pom.xml文件来界说项目的依赖、插件和构建配置。POM 是 Maven 项目的核心,描述了项目的基本信息。
依赖管理
:Maven 答应开发者轻松地管理项目所需的库和框架。通过声明依赖,Maven 会自动下载所需的库及其依赖项,办理版本冲突。
插件体系
:Maven 提供了丰富的插件,可以在构建过程中实行各种任务,例如编译代码、打包、运行测试等。
生命周期管理
:Maven 通过界说项目的生命周期来规范构建过程,主要包含清理、编译、测试、打包、摆设等阶段。
多模块项目支持
:Maven 支持多模块项目,答应将相干模块组织在同一个项目结构中,方便管理和构建。
社区支持
:Maven 拥有庞大的社区支持,提供了大量的插件和资源,帮助开发者高效开展工作。
1. 常见的依赖冲突报错
1.1、版本冲突报错
:
[WARNING] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[WARNING]
[WARNING] org.apache.commons:commons-lang3:jar:3.4 is referenced from more than one dependency.
[WARNING] - org.apache.commons:commons-lang3:jar:3.4 (compile)
[WARNING] - org.apache.commons:commons-lang3:jar:3.5 (compile)
复制代码
1.2、类找不到或方法找不到
:
NoClassDefFoundError
或者
ClassNotFoundException
或者
NoSuchMethodException
常见但不仅限于以下异常:
java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
或者
java.lang.NoSuchMethodError: org.apache.commons.lang3.StringUtils.isBlank(Ljava/lang/CharSequence;
NoSuchMethodException
依赖冲突可能会间接导致 NoSuchMethodException。例如:
不同版本的库:如果项目中引入了同一库的不同版本,Maven 可能会选择一个版本,而这个版本中可能缺少某些方法,从而在运行时导致 NoSuchMethodException。
依赖传递:某些依赖可能会引入其他库的特定版本,如果这些版本之间存在不兼容的方法,也可能导致 NoSuchMethodException。
复制代码
1.3、依赖树中的冲突
:
例如:
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.3.4.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.3.4.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot:jar:2.3.4.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.3.4.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.3.4.RELEASE:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] | | | | +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] | | | | \- org.slf4j:slf4j-api:jar:1.7.30:compile
[INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.13.3:compile
[INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.13.3:compile
[INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.30:compile
[INFO] | | +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] | | +- org.springframework:spring-core:jar:5.2.9.RELEASE:compile
[INFO] | | | \- org.springframework:spring-jcl:jar:5.2.9.RELEASE:compile
复制代码
2、排查maven 依赖是否冲突
2.1、pom 依赖,这里展示部门依赖进行拆解
2.2、使用idea 自带工具进行排查分析:红色的线就表示冲突了。
2.3、使用工具 :maven helper
起首我使用的idea工具,可以安装插件maven helper,
2.4、重启idea
这玩意装好,我们关闭窗口,有大概会叫你restart一下,你就乖乖听话。之后我们打开pom文件并且点击依赖分析。切换到:Dependency Analyzer
3、分析冲突
3.1、点击右键---》Jump to Source 就会跳回到自己的pom 文件
(我这跳转到 56 行)
这个时间我们可以一直向下点击,去看
mybatis 3.5.14 依赖路径和 mybatis 3.5.15 冲突依赖路径版本
4、办理办法
统共有四种办理方式:
1,第一声明优先原则
在pom.xml配置文件中,假如有两个名称相同版本差别的依赖声明,那么先写的会生效(同个pom.xml文件)。
所以,先声明自己要用的版本的jar包即可。
2,路径近者优先
直接依赖优先于通报依赖,假如通报依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖jar,即可办理冲突。
3,排除原则
通报依赖冲突时,可以在不必要的jar的通报依赖中声明排除,从而办理冲突。
在pom 文件就会自动生成 排除标识
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
<exclusions>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
复制代码
结果:
刷新:先返回去pom 点击刷新,然后在 maven help 里面点击 Refresh UI
最后依赖冲突只剩三个
4,版本锁定原则
在配置文件pom.xml中先声明要使用哪个版本的相应jar包,声明后其他版本的jar包一律不依赖。办理了依赖冲突。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.14</version>
</dependency>
</dependencies>
</dependencyManagement>
复制代码
结果:依旧可以排撤消依赖冲突
最后文章有啥不对,接待大佬指点!!!
假如感觉对你有帮助就
点赞推荐
或者
关注
一下吧!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
吴旭华
论坛元老
这个人很懒什么都没写!
楼主热帖
【云原生】第二篇--容器管理工具 Docke ...
mamba-ssm安装building wheel卡着不动 ...
数据库系统课程设计(高校成绩管理数据 ...
《原CSharp》第二回 巧习得元素分类 子 ...
使用TrueNas(FreeNas)进行华为手机备 ...
JVM虚拟机性能监控与故障处理工具(3) ...
java中==和equals区别
Spark 总复习
【图论】—— 有向图的强连通分量 ...
Docker命令实战
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表