maven为什么发生依赖冲突?怎么解决依赖冲突?
- 作者: 五速梦信息网
- 时间: 2026年04月20日 04:37
maven为什么发生依赖冲突?怎么解决依赖冲突?
我们在开发的时候,偶尔会遇到依赖冲突的时候,一般都是NoClassDefFoundError、ClassNotFoundException、NoSuchMethodError。打开搜索框又发现有这个类,明明就是引入进来了,就是找不到,让人头疼
1. 依赖冲突场景
在maven中依赖管理,依赖是可以传播的 假设:我有个A项目。第一步A项目引入B依赖,B依赖又会引入C依赖(版本1.1),那么A项目就同时拥有了B、C依赖(版本1.1),第二步我再引入D依赖,D依赖引入C依赖(版本1.2) 图解:
第一步:A -> B -> C(1.1版本)
第二步:A -> D -> C (1.2版本)
问题来了,maven会取哪个版本的C进行引入?
2. 当冲突时maven怎么样选择
针对依赖冲突场景提出的问题,答案是:1.1版本 为什么是1.1 版本?因为maven有几条原则,按照原则优先级选择
2.1 就近原则
哪个依赖离的近取哪个 假设:我有个A项目。第一步A项目引入B依赖,B依赖又会引入C依赖(版本1.1)。第二步,在本项目pom中引入C依赖(版本1.2) 图解:
第一步:A -> B -> C(1.1版本)
第二步:A -> C (1.2版本)
那必须是1.2版本啊
2.2 第一声明者原则
通俗一点就是,就近原则如果相同判断不出来,谁先来谁选择谁 假设:我有个A项目。第一步A项目引入B依赖,B依赖又会引入C依赖(版本1.1),那么A项目就同时拥有了B、C依赖(版本1.1),第二步我再引入D依赖,D依赖引入C依赖(版本1.2) 图解:
第一步:A -> B -> C(1.1版本)
第二步:A -> D -> C (1.2版本)
那必须是1.1版本啊
3. 怎么样解决冲突?
idea下载Maven Helper插件
点击pom文件左下角
点击Conflicts选择冲突选项
右键,点击Exclude排除
返回pom文件发现自动加了exclusions标签进行排除
<artifactid>poi-ooxml-schemas</artifactid>
<groupid>org.apache.poi</groupid>
一般来说取高版本的,因为高版本的一般都会兼容低版本
相关文章
-
Manim实现旋转变色特效
Manim实现旋转变色特效
- 互联网
- 2026年04月20日
-
manim 动画效果总结
manim 动画效果总结
- 互联网
- 2026年04月20日
-
Magick.NET 支持100多种格式的强大 .NET 图片处理库
Magick.NET 支持100多种格式的强大 .NET 图片处理库
- 互联网
- 2026年04月20日
-
MCP官方C# SDK:实现.NET与MCP客户端和服务器快速交互
MCP官方C# SDK:实现.NET与MCP客户端和服务器快速交互
- 互联网
- 2026年04月20日
-
MCP协议Streamable HTTP
MCP协议Streamable HTTP
- 互联网
- 2026年04月20日
-
MCP应用的docker与docker
MCP应用的docker与docker
- 互联网
- 2026年04月20日





