在软件开发中,Dependency(依赖)冲突指的是:项目中同时引入了同一个库(或不同库)的不兼容版本/要求,导致构建失败、运行时报错或行为异常。
下面从常见原因 → 典型表现 → 解决方式系统说明。
你直接依赖 A,A 依赖 lib-x:1.0
你又直接依赖 B,B 依赖 lib-x:2.0
最终项目里出现:
lib-x:1.0
lib-x:2.0
但只能保留一个版本。
例如:
com.google.guava:guava:28com.google.guava:guava:31API 可能已变更,旧代码用新方法会失败。
spring-core >= 5.2spring-core < 5.0无法满足所有条件。
构建工具自动选了一个“最近/最高”版本,但这个版本:
multidex / minSdk 限制peerDependencies 不匹配ClassNotFoundExceptionNoSuchMethodErrorNoClassDefFoundErrordependency conflictresolution failedERESOLVE<dependency>
<groupId>com.example</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
</dependency>
A 和 B 内部依赖不同版本的 C
"dependencies": {
"lib-a": "^1.0.0",
"lib-b": "^2.0.0"
}
两者依赖不同大版本的 react
implementation 'com.x:core:1.0'
implementation 'com.y:core:2.0'
mvn dependency:tree
强制版本:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.x</groupId>
<artifactId>lib</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</dependencyManagement>
./gradlew dependencies
强制版本:
configurations.all {
resolutionStrategy {
force 'com.x:lib:2.0'
}
}
npm ls react
解决方式:
npm install react@18
# 或
npm dedupe
dependencyManagement / resolutions如果你愿意,可以告诉我:
我可以直接帮你定位并解决冲突。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。