Jenkins构建报错:无法注入DefaultLocalRepositoryProvider.logger字段求助
我之前也碰到过几乎一模一样的问题,当时折腾了好一阵才搞定,给你几个针对性的排查方向,亲测有效:
检查Jenkins的Maven安装类型:别用Jenkins自带的嵌入式Maven!哪怕你选了和正常服务器相同的版本,嵌入式Maven经常会和项目里的Aether依赖产生版本冲突。去Jenkins「全局工具配置」里,确认Maven是选择的「从Apache安装」或者指定本地独立安装的路径,保存后重新触发任务。
清理Jenkins用户的Maven本地仓库:大概率是本地仓库里的缓存jar包损坏或者版本冲突了。找到Jenkins运行用户的
.m2/repository目录(Linux通常是/var/lib/jenkins/.m2/repository,Windows是C:\Users\Jenkins\.m2\repository),直接删掉整个repository文件夹,然后重新跑任务让Maven重新下载所有依赖。更新Jenkins的Maven集成插件:旧版本的Maven Integration Plugin对高版本Maven的Aether组件支持有缺陷。去Jenkins「插件管理」里,找到Maven Integration Plugin,升级到最新稳定版,或者找和你Maven版本匹配的插件版本(比如Maven 3.8.x对应插件3.20+版本)。
对齐两台服务器的JDK版本:错误栈里的反射异常很可能和JDK版本差异有关。确保出问题的Jenkins服务器用的JDK和正常服务器完全一致,包括大版本和小版本(比如都是OpenJDK 1.8.0_381,不能一个是OracleJDK一个是OpenJDK)。
同步settings.xml配置:即使Maven版本相同,两台Jenkins使用的settings.xml可能有差异(比如镜像、本地仓库路径、代理配置)。把正常运行的那台服务器上的settings.xml复制到出问题的服务器,替换掉Jenkins使用的配置文件(通常在
.m2/settings.xml或者Jenkins全局配置里指定的路径)。
如果以上方法都没解决,可以在Jenkins任务里加一个预处理步骤,执行命令:
mvn clean install -U
-U参数会强制Maven更新快照依赖,同时清理本地缓存。
内容的提问来源于stack exchange,提问作者FuSsA

