使用Gradle 3.5构建项目时出现403错误,原因是什么?
嘿,我碰到过一模一样的问题!这个报错的核心原因很直白:你用的org.springframework.build.gradle:propdeps-plugin:0.0.6对应的旧SpringSource插件仓库,现在已经限制公开访问了,所以拉取pom文件时直接返回403权限禁止。下面给你几个实用的解决方向:
方案一:移除旧插件,改用Gradle原生特性
propdeps-plugin当初是为了补全Gradle对「提供依赖」「可选依赖」的支持,但现在Gradle早就原生支持这些功能了,完全可以抛弃这个停更的旧插件。
比如原来用插件的provided配置,现在换成compileOnly;optional依赖直接在声明里加optional = true就行。举个具体的代码例子:
// 先删掉原来的插件引用 // apply plugin: 'propdeps' // apply plugin: 'propdeps-maven' dependencies { // 替代原来的provided依赖 compileOnly 'org.springframework:spring-core:xxx' // 替代原来的optional依赖 implementation 'com.some.library:xxx:yyy' { optional = true } }
这个方案是长期靠谱的选择,既解决了仓库访问问题,又能用上Gradle官方维护的特性。
方案二:替换仓库为可用镜像或中央仓库
如果你确实需要保留这个旧插件,可以尝试把构建脚本里的仓库换成Maven中央仓库或者国内镜像仓库,比如阿里云的Maven镜像:
buildscript { repositories { // 删掉原来的http://repo.springsource.org/plugins-release mavenCentral() // 加上阿里云镜像,国内访问更稳定 maven { url 'https://maven.aliyun.com/repository/public' } } dependencies { classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.6' } }
不过要注意,这个超老版本可能在中央仓库也找不到,所以方案一还是优先推荐的。
附你遇到的完整错误信息:
FAILURE: 构建因异常失败。出错原因:配置根项目‘rightskillnow-parent’时出现问题。无法解析配置‘:classpath’的所有依赖。无法解析org.springframework.build.gradle:propdeps-plugin:0.0.6。项目所需:project : > 无法解析org.springframework.build.gradle:propdeps-plugin:0.0.6。 > 无法获取资源‘http://repo.springsource.org/plugins-release/org/springframework/build/gradle/propdeps-plugin/0.0.6/propdeps-plugin-0.0.6.pom’。 > 无法GET‘http://repo.springsource.org/plugins-release/org/springframework/build/gradle/propdeps-plugin/0.0.6/propdeps-plugin-0.0.6.pom’。服务器返回状态码403:Forbidden
内容的提问来源于stack exchange,提问作者Melvin Shaju

