You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grails2.5.0容器化打包无法下载hibernate4等插件依赖问题求助

问题根因

你遇到的SSL握手失败问题核心由两点导致:

  • 所用的proactivehk/grails:2.5.0镜像内置旧版OpenJDK 7,自带的CA根证书库未收录Grails官方仓库当前SSL证书的信任链,即使指定TLS协议版本也无法解决证书不信任的问题
  • 本地Windows环境可正常构建,要么是系统/IDE所用的JDK版本更高、证书库已更新,要么是依赖已经提前缓存到本地,不需要发起公网请求
解决方案

方案1:替换公网仓库地址(最快生效)

修改grails-app/conf/BuildConfig.groovy的repositories块,注释掉默认的grailsCentral(),替换为HTTP协议的Grails插件仓库,避开SSL校验:

repositories {
    inherits true
    grailsPlugins()
    grailsHome()
    mavenLocal()
    // 注释掉默认的HTTPS仓库
    // grailsCentral()
    // 替换为HTTP协议的官方插件仓库
    mavenRepo "http://repo.grails.org/grails/plugins-releases/"
    mavenRepo "our maven Repo"
    mavenCentral()
}

如果有内部镜像源,也可以替换为内部的Grails插件镜像地址,同时建议把私有仓库的配置提到最前面,优先从内部拉取依赖,减少公网请求。

方案2:更新镜像内JDK证书库(保留HTTPS协议)

修改Dockerfile,在构建阶段更新系统CA证书并同步到JDK的信任证书库:

FROM proactivehk/grails:2.5.0
# 更新系统CA证书并同步到JDK证书库
RUN apt-get update && apt-get install -y ca-certificates && \
    update-ca-certificates && \
    cp /etc/ssl/certs/java/cacerts $JAVA_HOME/jre/lib/security/cacerts
WORKDIR /app
COPY . .
CMD grails -Dhttps.protocols=TLSv1.2 prod war

方案3:依赖预先缓存(最稳妥,适合企业内部场景)

将所有需要的Grails插件上传到你配置的内部私有Maven仓库,构建时直接从内部仓库拉取依赖,完全不需要访问公网Grails仓库,从根源避免网络和证书问题。


内容的提问来源于stack exchange,提问作者Faxon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:27:04