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

Sonatype Jira停用后,发布AAR到MavenCentral遇401认证问题

解决MavenCentral发布时的401凭证认证错误

问题根源

Sonatype停用Jira后,原有的ossrh账号体系已完全替换为Central Portal账号体系,你无法再用旧方式创建ossrh凭证,必须使用Central Portal生成的访问令牌作为Nexus仓库的登录凭证,这是导致401错误的核心原因。

分步解决方案

1. 生成Central Portal访问令牌

  • 用关联的GitHub账号登录Sonatype Central Portal
  • 进入个人Profile页面,找到「Access Tokens」板块
  • 点击「Create Token」,权限选择「Nexus Repository Manager」,完成令牌生成
  • 务必保存好生成的Username(固定为token)和Password(令牌字符串)——令牌一旦生成无法再次查看,丢失只能重新生成

2. 配置Gradle凭证

在项目根目录的gradle.properties或本地~/.gradle/gradle.properties文件中添加以下配置:

mavenCentralUsername=token
mavenCentralPassword=你的令牌字符串

(建议用本地gradle.properties避免凭证提交到版本控制)

3. 修正发布仓库的Gradle配置

确保发布脚本中的仓库地址和凭证逻辑正确,区分快照版本和正式版本的仓库地址:

publishing {
    repositories {
        maven {
            // 正式版本用staging仓库地址,快照版本用snapshots仓库地址
            url = uri(project.version.endsWith("SNAPSHOT") 
                ? "https://s01.oss.sonatype.org/content/repositories/snapshots/" 
                : "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
            credentials {
                username = project.findProperty("mavenCentralUsername") ?: System.getenv("MAVEN_CENTRAL_USERNAME")
                password = project.findProperty("mavenCentralPassword") ?: System.getenv("MAVEN_CENTRAL_PASSWORD")
            }
        }
    }
}

4. 重新执行发布任务

  • 清理Gradle缓存:./gradlew clean
  • 执行发布:./gradlew publish

关键注意点

  • 确认你的命名空间已在Central Portal完成验证(在「Namespaces」页面可查看状态)
  • 快照版本必须使用snapshots仓库地址,而非staging地址,否则会触发权限错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:25:03