
本文详解 jenkins/openshift 环境下 gradle 构建因无法访问 maven 中央仓库(如 repo.maven.apache.org)导致 `connect timed out` 错误的根本原因与系统级代理配置方法,重点指导如何通过 `gradle.properties` 正确设置 https 代理以恢复依赖解析。
该错误并非 Gradle 或构建脚本本身的问题,而是运行环境(Jenkins Agent / Openshift Pod)缺乏对外网 Maven 仓库的网络访问能力——典型表现为 Connect to repo.maven.apache.org:443 [...] failed: connect timed out。本地构建成功而 CI 环境失败,恰恰印证了这是网络策略差异所致:企业内网通常强制走代理访问外网,而 Jenkins 节点或容器未配置相应代理参数,导致 Gradle 的 HTTP 客户端直连超时。
根本解决方式是为 Gradle 运行时显式声明系统级代理配置,推荐在项目级 gradle.properties 文件中设置(该文件会被 Gradle 自动加载,且可安全纳入版本控制,敏感值建议通过 CI 变量注入):
# gradle.properties systemProp.https.proxyHost=your-proxy.company.com systemProp.https.proxyPort=8080 systemProp.http.proxyHost=your-proxy.company.com systemProp.http.proxyPort=8080 systemProp.https.nonProxyHosts="localhost|127.0.0.1|*.company.com" systemProp.http.nonProxyHosts="localhost|127.0.0.1|*.company.com"
⚠️ 注意事项:
- proxyHost 和 proxyPort 必须替换为企业实际的代理地址与端口(常见为 http://proxy.corp:8080 或 https://proxy.corp:8443);
- 若代理需认证,请额外添加:
systemProp.https.proxyUser=your-username systemProp.https.proxyPassword=your-password
(注意:密码明文存在安全风险,生产环境应优先使用 Jenkins Credentials Binding 或环境变量动态注入);
ECTouch移动商城系统下载ECTouch是上海商创网络科技有限公司推出的一套基于 PHP 和 MySQL 数据库构建的开源且易于使用的移动商城网店系统!应用于各种服务器平台的高效、快速和易于管理的网店解决方案,采用稳定的MVC框架开发,完美对接ecshop系统与模板堂众多模板,为中小企业提供最佳的移动电商解决方案。ECTouch程序源代码完全无加密。安装时只需将已集成的文件夹放进指定位置,通过浏览器访问一键安装,无需对已有
- nonProxyHosts 使用 | 分隔,支持通配符 *,务必包含 localhost、127.0.0.1 及内网域名,避免代理环路;
- 不要删除 http.* 配置项——尽管 Maven 仓库使用 HTTPS,但 Gradle 内部部分逻辑仍会触发 HTTP 请求;
- 若 Jenkins Pipeline 中通过 sh 'gradle build' 执行,请确保 gradle.properties 位于工作目录或 $GRADLE_USER_HOME 下;也可在 Pipeline 中直接传参:
sh "gradle build -Dhttps.proxyHost=... -Dhttps.proxyPort=..."
此外,不建议在 build.gradle 中硬编码代理(如 System.setProperty()),因其仅影响 JVM 启动后阶段,无法覆盖 Gradle 初始化期间的仓库连接;也不推荐修改全局 $GRADLE_USER_HOME/gradle.properties,不利于多项目隔离。
总结:超时本质是网络可达性问题。通过标准化 gradle.properties 代理配置,既符合 Gradle 官方推荐实践,又能确保 Jenkins/Openshift 等受限环境稳定拉取依赖,是企业级 CI 流水线中可复用、可审计的基础设施方案。








