Gradle依赖解析长期卡住问题求助(Gradle 6.8.3)
Gradle依赖解析卡顿+不稳定依赖图问题的解决线索
1. 强制锁定冲突依赖版本
针对警告里的两个包,直接在build.gradle里锁定版本,避免Gradle反复尝试版本匹配:
configurations.all { resolutionStrategy { // 替换为你项目兼容的稳定版本,确保两个包版本匹配 force 'org.apache.httpcomponents:httpasyncclient:4.1.5' force 'org.apache.httpcomponents:httpcore-nio:4.4.14' } }
版本可以查Maven Central上的兼容稳定版,优先选和项目其他依赖适配的版本。
2. 调试依赖解析过程
用参数查看解析日志,定位卡顿节点:
# 快速查看解析关键步骤 ./gradlew build --info | grep "resolving" # 生成详细调试日志(日志较大,建议输出到文件) ./gradlew build --debug > gradle-debug.log
从日志里找长时间停滞的依赖或仓库请求,就能明确是网络问题还是某个依赖的问题。
3. 优化仓库配置
- 替换为国内镜像仓库,减少网络延迟:
repositories { maven { url 'https://maven.aliyun.com/repository/public' } // 注释掉速度慢的官方仓库或第三方仓库 // mavenCentral() }
- 删除重复或不必要的仓库,Gradle会遍历所有仓库找依赖,仓库越多耗时越长。
4. 清理并刷新缓存
缓存损坏可能导致解析异常,清理后重新构建:
# 清理本地Gradle缓存 rm -rf ~/.gradle/caches # 强制刷新依赖并构建 ./gradlew clean build --refresh-dependencies
5. 排查依赖冲突根源
用dependencyInsight命令查看两个包的依赖路径,找出导致版本冲突的源头:
./gradlew dependencyInsight --dependency org.apache.httpcomponents:httpasyncclient ./gradlew dependencyInsight --dependency org.apache.httpcomponents:httpcore-nio
找到冲突的依赖后,排除其传递依赖:
dependencies { implementation('引发冲突的依赖坐标') { exclude group: 'org.apache.httpcomponents', module: 'httpasyncclient' } }
6. 升级Gradle版本(谨慎操作)
Gradle 6.8.3是2021年的老版本,后续版本对依赖解析引擎有不少优化。可以尝试升级到同大版本的最新版(比如6.9.4),或者7.x系列(注意检查插件、Kotlin版本兼容性):
./gradlew wrapper --gradle-version 6.9.4
内容的提问来源于stack exchange,提问作者Bharath N
相关产品推荐
相关产品推荐

