通过TeamCity运行Selenium测试遇maven-jar-plugin依赖解析失败
我来帮你捋捋这个maven-jar-plugin的问题,这种依赖解析失败在TeamCity环境里真的挺常见的,给你几个实用的解决方向:
检查TeamCity服务器的网络连通性
先确认TeamCity所在服务器能不能正常访问Maven中央仓库,在服务器终端执行这个命令试试:curl https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/3.1.0/maven-jar-plugin-3.1.0.pom如果返回的是pom文件内容,说明网络没问题;要是连不通,大概率是服务器防火墙、代理规则限制了访问,得找运维调整网络策略,或者给Maven配置代理。
配置内部Maven镜像代替中央仓库
很多公司都会搭建内部的Maven仓库(比如Nexus、Artifactory),稳定性比公共仓库好太多。你可以在TeamCity的Maven构建步骤里指定使用内部镜像,或者修改TeamCity服务器上的settings.xml(一般在~/.m2/目录下),添加镜像配置:<mirrors> <mirror> <id>internal-repo</id> <mirrorOf>central</mirrorOf> <url>http://你的内部仓库地址/maven2</url> </mirror> </mirrors>强制更新Maven依赖缓存
有时候本地缓存的依赖文件损坏或者过期也会导致这个问题。你可以在TeamCity的Maven构建命令里加上-U参数,比如:clean test -U这个参数会强制Maven重新拉取依赖。要是还不行,就手动删掉TeamCity服务器上Maven本地仓库里的插件目录:
~/.m2/repository/org/apache/maven/plugins/maven-jar-plugin/3.1.0,然后重新构建。指定或降级插件版本
偶尔特定版本的插件在中央仓库会出现临时访问异常,你可以在项目的pom.xml里明确指定插件版本,或者降级到更稳定的版本(比如3.0.2):<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> </plugins> </build>检查TeamCity的Maven版本兼容性
有些旧版本的Maven对新版插件的支持可能不太好,你可以在TeamCity的构建代理配置里切换到更高版本的Maven试试,比如用Maven 3.6.x及以上版本。
内容的提问来源于stack exchange,提问作者StopTheRain

