Maven 依赖能正常下载,但 Jib 在访问镜像仓库时失败。这条线索很有用:Maven 仓库的访问是通的,只是没有走到 Jib 的镜像仓库客户端。

从失败的 URL 入手

失败的操作需要检查的代理配置
Maven 插件或依赖获取settings.xml 中生效的仓库代理及排除项。
Jib 获取基础镜像或仓库令牌的请求Jib 与仓库通信时使用的 Java 网络属性。

对于无需认证的 HTTP 中间代理,在 Maven 调用中给出 Jib 的路径:

mvn -Dhttp.proxyHost=proxy.example.net \
    -Dhttp.proxyPort=8080 \
    -Dhttps.proxyHost=proxy.example.net \
    -Dhttps.proxyPort=8080 \
    -Dhttp.nonProxyHosts='localhost|127.*|*.internal.example' \
    jib:buildTar

使用实际的代理主机和端口,同时保留项目的 Jib 镜像设置。对于允许的公共代理线路上的公共仓库和令牌服务,HTTP 代理列表可为这些免认证的代理字段提供候选。host 属性接受主机名,不带 http:// 前缀。https 属性用于为 HTTPS 目标选择代理;Java 的 HTTPS 绕过列表同样使用 http.nonProxyHosts。

输出到本地同样需要拉取

jib:buildTar 只在本地写出镜像归档,但它仍可能需要联网先取得基础镜像。选择这种输出并不会消除对仓库的请求。

改完配置后,再次比对失败的 URL。保留可用的 Maven 仓库设置,并针对 Jib 这条路径上剩余的仓库或令牌服务故障继续排查。

相关文章