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 】
相关推荐:
JS碰撞运动实现方法详解
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Laravel如何实现本地化和多语言支持?(i18n教程)
无锡营销型网站制作公司,无锡网选车牌流程?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
在线制作视频网站免费,都有哪些好的动漫网站?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
如何用已有域名快速搭建网站?
制作企业网站建设方案,怎样建设一个公司网站?
Laravel如何实现一对一模型关联?(Eloquent示例)
如何快速完成中国万网建站详细流程?
简单实现jsp分页
详解阿里云nginx服务器多站点的配置
深入理解Android中的xmlns:tools属性
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
实例解析angularjs的filter过滤器
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
如何构建满足综合性能需求的优质建站方案?
微信小程序 input输入框控件详解及实例(多种示例)
如何基于云服务器快速搭建网站及云盘系统?
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Swift中循环语句中的转移语句 break 和 continue
香港网站服务器数量如何影响SEO优化效果?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
新三国志曹操传主线渭水交兵攻略
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
如何在Tomcat中配置并部署网站项目?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
Android利用动画实现背景逐渐变暗
Laravel如何实现模型的全局作用域?(Global Scope示例)
Java垃圾回收器的方法和原理总结
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
javascript中的try catch异常捕获机制用法分析
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Laravel如何创建自定义Artisan命令?(代码示例)
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel中的Facade(门面)到底是什么原理
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
iOS验证手机号的正则表达式
如何在建站之星网店版论坛获取技术支持?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南

