You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Maven deploy时Nexus Releases仓库报401未授权,Snapshots正常

Maven部署正式版本到Nexus Releases仓库出现401未授权问题

问题背景

在Sonatype Nexus Repository OSS 3.53.1-01中创建了3个私有仓库:

  • browz-dev-releases:Maven Hosted类型,禁用重新部署
  • browz-dev-snapshots:Maven Hosted类型,允许重新部署
  • browz-dev-repos-group:仓库组,包含上述两个仓库及maven-public

使用Maven 3.9.1,全局及用户级settings.xml指向${MAVEN_HOME}/conf/settings.xml,已完成server认证、镜像、profile及激活配置,项目pom.xml也配置了distributionManagement。部署带-SNAPSHOT后缀的版本到browz-dev-snapshots仓库完全正常,但部署正式版本(移除-SNAPSHOT)到browz-dev-releases时,持续出现401未授权错误,且操作账号拥有nx-admin角色。

关键配置信息

settings.xml 中的Server认证配置

<server>
    <id>browz-dev-releases</id>
    <username>USER</username>
    <password>PASS</password>
</server>
<server>
    <id>browz-dev-snapshots</id>
    <username>USER</username>
    <password>pass</password>
</server>

settings.xml 中的镜像配置

注释了默认的HTTP拦截镜像,添加全局镜像:

<!-- 已注释默认的http blocker -->
<!-- 
<mirror>
  <id>maven-default-http-blocker</id>
  <mirrorOf>external:http:*</mirrorOf>
  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  <url>http://0.0.0.0/</url>
  <blocked>true</blocked>
</mirror>
-->

<mirror> 
    <id>nexus</id>
    <mirrorOf>*</mirrorOf> 
    <url>http://localhost:8081/repository/browz-dev-repos-group/</url>
</mirror>

settings.xml 中的Profile及激活配置

<profile>
    <id>nexus</id>
    <repositories>
        <repository>
            <id>central</id>
            <url>http://localhost:8081/repository/browz-dev-repos-group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <url>http://localhost:8081/repository/browz-dev-repos-group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
</profile>

<activeProfiles>
    <activeProfile>nexus</activeProfile>
</activeProfiles>

pom.xml 中的distributionManagement配置

<distributionManagement>
    <repository>
        <id>browz-dev-releases</id>
        <name>Dev Releases Repostiory</name>
        <url>http://localhost:8081/repository/browz-dev-releases/</url>
    </repository>
    <snapshotRepository>
        <id>browz-dev-snapshots</id>
        <name>Dev Snapshots Repostiory</name>
        <url>http://localhost:8081/repository/browz-dev-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

错误日志

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy(default-deploy)on project browz-framework: Failed to deploy artifacts: 
Could not transfer artifact com.browz:browz-framework:jar:1.0.0 from/to browz-dev-releases 
(http://localhost:8081/repository/browz-dev-releases/): Access denied to 
http://localhost:8081/repository/browz-dev-releases/com/brwoz/browz-framework/1.0.0/browz- 
framework-1.0.0.jar. Error code 401, Unauthorized[m ->[Help 1]

排查与解决步骤

  1. 核对密码大小写
    注意到settings.xml中两个server的密码大小写不一致:browz-dev-releases用的是PASS(大写),browz-dev-snapshots用的是pass(小写)。Nexus的密码是大小写敏感的,先确认账号的实际密码,将两个server的密码统一为正确值后重试。

  2. 检查Releases仓库的部署权限
    即使账号拥有nx-admin角色,仍需确认browz-dev-releases仓库的权限配置:

    • 登录Nexus控制台,找到browz-dev-releases仓库,进入「Settings」标签;
    • 确认「Deployment Policy」的设置:禁用重新部署仅限制覆盖已存在的版本,不影响部署新的正式版本;
    • 进入「Permissions」标签,确认nx-admin角色拥有该仓库的nx-repository-view-maven2-browz-dev-releases-deploy权限(部署权限)。
  3. 临时禁用全局镜像测试
    你配置了<mirrorOf>*</mirrorOf>的全局镜像,虽然理论上不会影响distributionManagement指定的独立仓库部署,但可临时注释该镜像配置,重新执行deploy命令,排查是否是镜像规则干扰了认证流程。

  4. 清理Maven本地缓存
    Maven可能缓存了旧的认证信息,执行以下命令清理缓存并重新构建:

    mvn clean install -U
    

    之后再执行mvn deploy尝试部署正式版本。

  5. 查看Nexus详细日志
    登录Nexus服务器,查看sonatype-work/nexus3/log/nexus.log,找到对应401错误的日志条目,里面会明确说明是认证失败还是权限不足,这是最直接的排查依据。

内容的提问来源于stack exchange,提问作者userDT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:05:25