使用Gradle引入Mongo依赖时出现依赖解析失败异常求助
嘿,我来帮你搞定这个Gradle依赖解析的麻烦,这种情况我碰到过好多次,咱们一步步来排查:
1. 先把依赖配置的语法捋顺
你给出的依赖代码好像被截断了,spring-data...这部分不完整,首先得把依赖声明补全,而且格式要正确。比如spring-data-mongodb的完整依赖应该是这样的:
compile 'org.springframework.data:spring-data-mongodb:2.0.6.RELEASE'
另外,多个依赖最好换行分开写,看起来清晰还不容易出错:
dependencies { compile 'org.mongodb:mongodb-driver:3.6.3' compile 'org.springframework.data:spring-data-mongodb:2.0.6.RELEASE' compile 'org.mongodb:mongo-java-driver:3.6.3' }
对了,如果你的Gradle版本是5.0及以上,compile已经被官方废弃了,建议换成implementation或者api,不过旧版本用compile也没问题。
2. 确认仓库配置够不够全
虽然你已经加了mavenCentral(),但有时候某些仓库同步不及时,或者Spring的依赖在官方仓库里更稳,你可以试试把仓库配置改成这样:
repositories { mavenLocal() // 先看本地仓库有没有缓存 mavenCentral() maven { url 'https://repo.spring.io/release' } // 专门加个Spring官方仓库,确保spring-data的依赖能找到 }
3. 版本兼容性没问题,但可以刷新缓存试试
spring-data-mongodb:2.0.6.RELEASE本来就对应MongoDB驱动3.6.x版本,你选的3.6.3是完全兼容的,这部分不用慌。不过有时候Gradle的本地缓存会出问题,你可以强制刷新一下:
执行这个命令(Windows系统把./gradlew换成gradlew.bat):
./gradlew clean build --refresh-dependencies
4. 排查网络和代理的锅
如果你是在公司网络或者需要代理的环境下,得给Gradle配置代理信息才行。在项目根目录的gradle.properties文件里加这些内容:
systemProp.http.proxyHost=你的代理地址 systemProp.http.proxyPort=代理端口 systemProp.https.proxyHost=你的代理地址 systemProp.https.proxyPort=代理端口
要是不需要代理,就确认下你的网络能不能正常访问Maven Central,比如直接搜一下这些依赖,看看对应的版本是否存在。
5. 暂时注释排除规则,先确保依赖能解析
你配置了排除commons-logging,这一般不会影响Mongo依赖的解析,但保险起见,可以先把这行注释掉,等依赖能正常下载了再加回来:
// configurations.all { exclude group: "commons-logging", module: "commons-logging" }
要是以上方法都试过还是不行,就运行这个命令查看详细日志:
./gradlew dependencies --debug
日志里会明确告诉你是哪个仓库找不到依赖,还是版本不存在,到时候对着解决就行。
内容的提问来源于stack exchange,提问作者Shiladittya Chakraborty

