Grails2.3.7依赖解析失败报308永久重定向错误如何解决
彻底解决Grails 2.3.7依赖下载308报错方案
根因说明
308报错核心是旧版Grails 2.3.7内置的grailsCentral()仓库默认使用HTTP地址,当前官方仓库已全线强制跳转HTTPS,同时你配置中使用的多个第三方HTTP仓库也都开启了强制HTTPS跳转,老版本依赖解析器不会自动跟进308跳转规则,直接导致依赖拉取失败。
分步修复步骤
- 替换默认Grails中央仓库配置:删除原有
grailsCentral()配置,替换为显式声明HTTPS地址的Grails插件仓库 - 全量替换配置中的HTTP仓库为对应HTTPS地址,避免其他仓库也触发308跳转
- 若替换后出现SSL握手报错,需将依赖站点的根证书导入JDK7的信任库(JDK7默认未包含部分新CA根证书)
- 清理本地缓存后重新拉取依赖
调整后的正确BuildConfig.groovy仓库配置示例
repositories { inherits true // Whether to inherit repository definitions from plugins grailsPlugins() grailsHome() mavenLocal() // 替换原grailsCentral()为显式HTTPS地址的Grails插件仓库 mavenRepo "https://repo.grails.org/grails/plugins-releases/" // mavenCentral() // mavenRepo "http://repository.codehaus.org" mavenRepo "https://maven.java.net/content/repositories/public/" // mavenRepo "http://repository.jboss.com/maven2/" mavenRepo "https://mavensync.zkoss.org/maven2" mavenRepo "https://repo1.maven.org/maven2/" }
JDK7证书导入操作说明
如果调整仓库地址后出现SSL握手失败报错,执行以下操作:
- 导出
repo.grails.org、repo1.maven.org等依赖站点的根证书文件 - 执行以下命令导入到JDK默认信任库,默认信任库密码为
changeit
keytool -import -alias [自定义证书别名] -file [本地证书文件路径] -keystore $JAVA_HOME/jre/lib/security/cacerts
- 证书导入完成后,执行
grails clean --refresh-dependencies即可正常拉取所有依赖
内容的提问来源于stack exchange,提问作者Maicon Mauricio
相关产品推荐
相关产品推荐

