Jenkins更新依赖时连接Artifactory超时致构建失败,求解决方案
解决依赖更新时Maven连接Artifactory超时的思路
问题背景
使用缓存依赖时构建正常,但升级Selenium至4或更新其他依赖后,构建抛出以下错误:
[ERROR] Failed to execute goal on project XXX: Could not resolve dependencies for project XXXl:jar:1.0-SNAPSHOT: Failed to collect dependencies at org.testng:testng:jar:7.5: Failed to read artifact descriptor for org.testng:testng:jar:7.5: Could not transfer artifact org.testng:testng:pom:7.5 from/to central (artifactory link): Connect to artifactory failed: Connection timed out (Connection timed out)
已尝试更新Bitbucket及Jenkins管理界面中的settings.xml。
解决思路
排查Jenkins节点网络连通性
- 在Jenkins构建机器上执行
telnet <artifactory_host> <port>或curl -v <artifactory_repo_url>/org/testng/testng/7.5/testng-7.5.pom,直接验证网络是否能连通Artifactory。若连通失败,需联系运维排查防火墙、端口开放或网络路由问题。 - 检查Jenkins节点的系统代理设置,避免用户级settings.xml的代理配置与系统代理冲突,导致连接异常。
- 在Jenkins构建机器上执行
验证Maven settings.xml的有效性
- 构建命令中显式指定settings.xml路径,如
mvn clean install -s /path/to/your/settings.xml,确保Jenkins使用的是你更新的配置文件,而非默认配置。 - 核对settings.xml中的镜像配置,确认central仓库指向的Artifactory地址无拼写错误;若配置了代理,检查代理的主机、端口、认证信息是否正确,且代理能正常访问Artifactory。
- 构建命令中显式指定settings.xml路径,如
清理缓存消除干扰
- 执行
mvn clean install -U强制更新依赖快照,同时清理Jenkins工作空间的Maven缓存,避免旧缓存损坏或残留导致的拉取异常。 - 若使用分布式Jenkins,确认各节点的Maven本地仓库路径一致,且节点对共享仓库(若有)具备读写权限。
- 执行
检查Artifactory状态与权限
- 确认Artifactory服务器正常运行,无停机、限流情况;查看Artifactory日志,排查是否存在Jenkins节点访问被拒绝的记录。
- 若Artifactory需要认证,核对settings.xml中的用户名、密码是否有效,且该账号具备拉取testng:7.5依赖的权限。
绕过传递依赖拉取验证
- 升级Selenium 4后可能间接触发testng版本升级,而新版本依赖未在Artifactory缓存。可手动在本地Maven仓库安装testng:7.5的POM与Jar文件,再执行构建,验证是否能正常运行;同时确认Artifactory是否能同步该依赖至本地仓库。
内容的提问来源于stack exchange,提问作者Alia
相关产品推荐
相关产品推荐

