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
相关产品推荐
相关产品推荐

