Maven部署失败401未授权:Jenkins流水线部署求助
错误信息
[ERROR] 在项目maven-web-application上执行目标org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy(default-deploy)失败:部署构件失败:无法将构件com.mt:maven-web-application:war:2.0.7-20230110.202313-1从/传输到nexus(http://172.31.7.102:8081/repository/maven-snapshots/):访问http://172.31.7.102:8081/repository/maven-snapshots/com/mt/maven-web-application/2.0.7-SNAPSHOT/maven-web-application-2.0.7-20230110.202313-1.war认证失败,状态码:401 Unauthorized
排查解决方案
- 核对Jenkins节点的Maven settings.xml:本地构建成功不代表Jenkins运行节点(含远程节点)的settings.xml与本地一致。登录Jenkins节点服务器,找到Maven安装目录下的
conf/settings.xml,或Jenkins全局配置指定的settings文件,确认<server>节点的用户名、密码正确,且id与pom中distributionManagement的仓库id完全匹配:<servers> <server> <id>nexus</id> <!-- 必须与pom内distributionManagement/repository/id完全一致 --> <username>nexus-deploy-account</username> <password>your-deploy-password</password> </server> </servers> - 验证Jenkins凭证配置:若流水线用Jenkins凭证管理注入认证信息,检查凭证类型(需为用户名+密码)、凭证ID是否在流水线脚本/Maven配置中正确引用,且对应Nexus账号拥有maven-snapshots仓库的部署权限(Nexus需分配
nx-repository-view-maven2-maven-snapshots-add和nx-repository-view-maven2-maven-snapshots-edit权限)。 - 检查Jenkins运行用户权限:确认Jenkins服务运行用户(如jenkins用户)有权读取settings.xml文件,避免因文件权限不足导致无法加载认证信息,可执行
ls -l /path/to/jenkins/used/settings.xml查看权限。 - 模拟Jenkins环境测试部署:在Jenkins节点上直接执行
mvn clean deploy -s /path/to/jenkins/used/settings.xml,模拟Jenkins运行环境测试部署,排除流水线脚本本身的问题。 - 检查Nexus仓库部署策略:确认maven-snapshots仓库的Deployment policy设置为
Allow redeploy,若为禁止部署会返回401/403状态码。 - 排查流水线脚本的Maven参数:确认流水线中是否通过
mavenSettingsFile参数或-s命令行参数指定了错误的settings文件路径。
内容的提问来源于stack exchange,提问作者Samuel Brandy
相关产品推荐
相关产品推荐

