Gradle 构建因 Maven 仓库连接超时失败的解决方案
发布时间 - 2026-01-26 00:00:00 点击率:次jenkins 在 openshift 环境中执行 gradle 构建时,因无法访问 `repo.maven.apache.org` 导致依赖解析失败,根本原因是构建节点缺乏代理配置;本地成功而 ci 失败,典型体现为网络策略差异。
该错误本质是 Gradle 在无代理配置的受限网络环境中(如企业内网或 OpenShift Jenkins Agent)尝试直连公网 Maven 中央仓库,但因防火墙、NAT 或安全组策略导致 HTTPS 连接超时(Connect timed out),进而无法下载 spring-boot-gradle-plugin 和 dependency-management-plugin 等关键构建插件。
虽然 buildscript.repositories 中已声明 mavenCentral() 和 plugins.gradle.org,但这仅控制运行时依赖的仓库源,而 Gradle 自身在初始化阶段(如解析 classpath 插件)需通过 JVM 级网络层发起 HTTP(S) 请求——此时若未配置系统级代理,请求将直接失败。
✅ 正确解法:通过 gradle.properties 设置 JV

在 Jenkins Pipeline 的工作目录(或 Gradle 用户主目录)下,确保存在 gradle.properties 文件,并添加以下代理配置(值需根据企业实际网络环境替换):
# gradle.properties systemProp.https.proxyHost=your-proxy.company.com systemProp.https.proxyPort=8080 systemProp.http.nonProxyHosts="localhost|127.0.0.1|*.company.com|openshift.internal" systemProp.https.proxyUser=your-username systemProp.https.proxyPassword=your-password
⚠️ 注意事项:nonProxyHosts 使用 | 分隔,支持通配符 *,务必包含内部服务域名(如 OpenShift API 地址、私有 Nexus 仓库等),避免代理环路;若代理需认证,请同时设置 proxyUser 和 proxyPassword;敏感信息建议通过 Jenkins Credentials Binding 插件注入,而非硬编码;不推荐在 build.gradle 中用 System.setProperty() 动态设置——该方式在 Daemon 模式下可能不生效,且违反 Gradle 配置最佳实践;对于容器化 Jenkins Agent,可将 gradle.properties 作为 ConfigMap 挂载,或在 Pipeline 中通过 sh 命令动态生成。
? 补充建议(提升健壮性):
- 在 buildscript { repositories { ... } } 中优先配置私有镜像仓库(如 Nexus/Artifactory),并启用 mavenCentral() 作为备用:
buildscript { repositories { maven { url "https://nexus.company.com/repository/maven-public/" } mavenCentral() // fallback maven { url "https://plugins.gradle.org/m2/" } } // ... } - 在 Jenkins Pipeline 脚本中验证代理是否生效:
sh 'curl -I https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-gradle-plugin/2.7.7/spring-boot-gradle-plugin-2.7.7.pom --proxy http://your-proxy:8080'
总结:Gradle 构建超时问题多源于网络可达性缺失,而非配置语法错误。通过 gradle.properties 统一管理 JVM 网络代理,既符合 Gradle 官方推荐方式,又能确保 Daemon 复用、CI 环境一致性与安全性。
# word
# apache
# 编码
# 防火墙
# curl
# proxy
# jenkins
# red
# spring
# maven
# jvm
# openshift
# gradle
# http
# https
# 而非
# 镜像
# 但这
# 又能
# 无法下载
# 可将
# 但因
# 内网
# 根本原因
# 复用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何自定义错误页面(404, 500)?(代码示例)
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何在Windows环境下新建FTP站点并设置权限?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
如何用PHP快速搭建高效网站?分步指南
如何在云服务器上快速搭建个人网站?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何撰写建站申请书?关键要点有哪些?
js实现获取鼠标当前的位置
教你用AI润色文章,让你的文字表达更专业
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel用户密码怎么加密_Laravel Hash门面使用教程
Android okhttputils现在进度显示实例代码
Laravel如何实现API资源集合?(Resource Collection教程)
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
网站制作企业,网站的banner和导航栏是指什么?
香港服务器租用费用高吗?如何避免常见误区?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
EditPlus中的正则表达式 实战(4)
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
魔方云NAT建站如何实现端口转发?
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel如何处理文件下载请求?(Response示例)
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
如何快速搭建自助建站会员专属系统?
浅谈javascript alert和confirm的美化
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何在Windows 2008云服务器安全搭建网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
高端建站三要素:定制模板、企业官网与响应式设计优化
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
简单实现jsp分页
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel如何使用Service Container和依赖注入?(代码示例)
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel如何使用Collections进行数据处理?(实用方法示例)

