“冲突 Dependency(依赖冲突)”通常出现在软件开发(尤其是使用构建工具如 Maven、Gradle、npm、pip 等)的场景中。下面我用通俗的方式解释为什么会冲突以及常见原因。
依赖冲突指的是:
同一个库(或不同库)在你的项目中,被引入了多个不兼容的版本,导致编译或运行出错。
例如:
okhttp 3.10okhttp 4.9你只引入了 A 和 B,但它们底层依赖了同一个库的不同版本。
你的项目
├─ A → libX:1.0
└─ B → libX:2.0
构建工具只能选一个版本,可能出问题。
构建工具(如 Maven)按“就近原则”选择版本:
结果:你以为用的是 2.0,实际是 1.0。
即使名字一样,版本不同也可能:
导致:
NoSuchMethodError
ClassNotFoundException
例如:
容易造成版本混乱。
例如:
test 可用<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
另一个库偷偷用了 31.0,方法不存在。
react@17
some-lib → react@18
Hooks 行为不一致。
✅ 使用依赖树分析
mvn dependency:treegradle dependenciesnpm ls✅ 显式锁定版本
✅ 排除冲突依赖(exclude)
✅ 使用 BOM(Spring Boot 常用)
✅ 统一依赖管理中心
Dependency 冲突的本质是:同一个东西,存在多个“说法不一致”的版本。
如果你愿意,可以告诉我:
我可以帮你精准定位并解决冲突。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。