如何登录Sonatype Nexus Repository Manager?Gradle发布401报错排查
如何登录https://oss.sonatype.org/的Sonatype Nexus Repository Manager?
问题背景
执行./gradlew publish时触发401错误,具体报错信息:
Execution failed for task ':initializeSonatypeStagingRepository'. > Failed to load staging profiles, server at https://oss.sonatype.org/service/local/ responded with status code 401, body:
当前build.gradle.kts配置如下:
plugins { id("io.github.gradle-nexus.publish-plugin") version "2.0.0" id("maven-publish") id("signing") } nexusPublishing { repositories { sonatype { val baseUrl = "https://oss.sonatype.org" nexusUrl.set(URI("$baseUrl/service/local/")) snapshotRepositoryUrl.set(URI("$baseUrl/content/repositories/snapshots/")) username.set(System.getenv("SONATYPE_USER")) password.set(System.getenv("SONATYPE_PASSWORD")) } } }
通过GitHub在central.sonatype.com注册的账号,无法直接登录oss.sonatype.org(该平台无第三方登录选项),尝试用central平台生成的用户token登录也被拒绝,登录失败仅提示:Please login before attempting further requests.
正确登录及解决401问题的步骤
- 新旧平台账号体系不互通:oss.sonatype.org是旧版Nexus仓库平台,和新版central.sonatype.com的账号系统相互独立,通过GitHub登录的新版账号无法直接用于旧平台。
- 获取旧平台专属凭据:
- 登录central.sonatype.com,进入个人账号页面
- 在账号设置中找到「旧版Sonatype Nexus凭据」(对应英文「Legacy Sonatype Nexus Credentials」)选项
- 生成旧平台的独立用户名和密码,该凭据仅用于旧平台的登录和发布操作
- 验证凭据有效性:用生成的旧版用户名和密码,直接在https://oss.sonatype.org/的登录界面输入即可完成登录验证
- 更新配置解决401:将生成的旧版用户名和密码设置到
SONATYPE_USER和SONATYPE_PASSWORD环境变量中,替换原有的无效凭据,重新执行./gradlew publish即可解决401错误

内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

