
本地构建成功但 jenkins 流水线失败,根本原因是 maven 在 jenkins 环境中优先使用 `settings.xml` 中配置的仓库地址(指向 `/repositories/wf-dependencies/`),而非 pom 中声明的 `/groups/dependencies/`,导致私有依赖无法命中。
在 Maven 构建过程中,仓库配置的优先级顺序为:settings.xml > pom.xml。即使你在 pom.xml 中正确定义了 <repository> 指向 https://repository.workfusion.com/content/groups/dependencies/(该路径聚合了多个仓库,包含你所需的 rpa-custom-elements:1.4 和 idp-commons:2.0.6),Jenkins 所用的 Maven 实例仍会优先读取其全局或用户级 settings.xml(通常位于 Jenkins agent 的 $HOME/.m2/settings.xml 或 Jenkins 全局工具配置中指定的 settings 文件),而该文件很可能只配置了 wf-dependencies ID 对应的 /repositories/wf-dependencies/(单一仓库路径),该路径下并不包含所需构件。
? 验证与修复步骤如下:
-
确认 Jenkins 使用的 settings.xml 内容
在 Jenkins Pipeline 中添加调试步骤,输出实际生效的 settings 文件路径及内容:sh 'mvn -X clean compile 2>&1 | grep "Reading global settings from\|Reading user settings from"'
或直接打印:
sh 'cat $HOME/.m2/settings.xml'
-
统一仓库 URL:确保 settings.xml 中 wf-dependencies 的 <url> 与 POM 一致
✅ 正确配置(指向 groups):<settings> <profiles> <profile> <id>workfusion-repo</id> <repositories> <repository> <id>wf-dependencies</id> <url>https://repository.workfusion.com/content/groups/dependencies/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>wf-dependencies</id> <url>https://repository.workfusion.com/content/groups/dependencies/</url> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>workfusion-repo</activeProfile> </activeProfiles> </settings> (推荐)避免 POM 与 settings 冲突:将仓库声明移至 settings.xml,POM 中仅保留 <repository> ID 引用(不写 <url>)
若需保持 POM 轻量化,可删除 pom.xml 中 <repositories> 块,仅依赖 settings.xml 统一管理——这是企业级 CI 最佳实践,确保环境一致性。-
清理 Jenkins agent 缓存(关键!)
旧构建可能已将错误仓库的元数据(如 resolver-status.properties)缓存在本地 .m2/repository/ 中,导致即使修复 settings 后仍尝试访问错误路径:sh 'rm -rf $HOME/.m2/repository/com/workfusion' // 或彻底清理(谨慎): // sh 'rm -rf $HOME/.m2/repository/*'
✅ 最终验证方式:
在 Jenkins Pipeline 中执行带调试日志的构建:
sh 'mvn -U -e clean install'
观察日志中 Downloading from wf-dependencies: 后的 URL 是否为 .../groups/dependencies/...,并确认 rpa-custom-elements:1.4 成功下载。
⚠️ 注意事项: 不要同时在 pom.xml 和 settings.xml 中为同一 id 配置不同 <url>,Maven 会以 settings.xml 为准,且不合并路径; Nexus 的 groups 是虚拟仓库组(Group Repository),它聚合多个 hosted/proxy 仓库;而 repositories 下的是具体仓库实例,二者不可互换; Jenkins Maven 配置中若启用了“Use private Maven repository”,请检查其关联的 settings.xml 是否被覆盖。
通过统一仓库地址、清理本地元数据缓存,并将配置中心化到 settings.xml,即可彻底解决本地通而 Jenkins 失败的依赖解析问题。










