MavenCentral 仓库更新问题
- 前言
- 正文
- 一、Maven central repository的账户迁移
- 二、获取加密账户信息
- 三、问题和解决方式
- ① 问题1
- ② 解决1
- ③ 问题2
- ④ 解决2
前言
在去年的3、4月份的时候我发布了一个开源库EasyView,在MavenCentral
上,可以说当时发布的时候就遇到过很多问题,发布的难度远超在jitpack
上发布库,随着发布之后一些开发者的使用和提出的建议,我对库进行了一些优化,优化之后就是库的版本更新了,于是就有了我下面要讲的内容。
正文
解决问题的过程是充满心酸的过程,关键点在于方向上的不同,同一个问题去找的时候大部分都是IDEA的maven的配置,都是关于Java的,我大Android要亡了吗?并没有,随着我的不断尝试,于是找到了一个可行的方法,下面我先介绍一些事情的前因后果。
一、Maven central repository的账户迁移
主要原因是几段英文,我简单翻译一下,你简单看一下子,如下所示:
我们(中央团队)希望让发布商了解进一步的更改 添加到帐户管理流程。作为我们不断努力实现现代化的一部分 我们的流程和提高我们可以为出版商提供的安全性,我们 已将 通过 创建的现有用户帐户导入到 Account Management Service 中,该服务将 中央发布者门户。这项工作对大多数人来说是透明的 的出版商,但在某些情况下需要 出版商。我们已提前通过电子邮件进行沟通,但此通知 希望能为有疑问的人提供额外的澄清。
我们的文档已被 已更新,以指示以前管理账户的流程 通过 OSSRH 帐户管理门户进行管理(在此之前)。需要注意的是,虽然 现在,每个账户都通过 https://central.sonatype.com 进行管理,从而创建一个新的 account 不一定授予对 OSSRH 服务器进行发布的访问权限。自 请求该访问权限,您需要按照旧版 OSSRH 的说明进行操作 出版商。访问 将授予当前无法使用 Central Publisher 的用户 门户。
以前,我们允许使用用户的用户名和密码进行发布。我们 强烈建议使用用户令牌,因为它们是更安全的 认证。随着新的账户管理更改,这将从 强烈推荐要求。此更改的原因是 新系统的技术限制。我们理解这将导致 对我们的一些出版商来说,虽然有轻微的干扰,但我们希望 结果对每个人来说都是一个更好的过程。
总结一下就是:账户的用户名和密码信息进行了安全加密,在仓库的发布和更新时将需要使用加密后的账户和信息。
到这里你有没有明白是什么意思?不明白没有关系,下面我们先获取加密后的账户和信息。
二、获取加密账户信息
首先需要登录 MavenCentral Repository,然后在用户信息哪里点击你的用户名出现的弹窗有两项,Profile
和Logout
,点击Profile
,点击Profile页面。
然后点击下拉选择User Token
,进入User Token
页面,这里面你可以访问和重置User Token
点击 Access User Token
,将会验证你的账号和密码,验证之后会出现一个一分钟后关闭的小弹窗,里面就有你的加密后的账户和密码,如下图所示:
这个信息保存之后放到gradle.properties中,如下所示:
ossrhToken=yourUsername
ossrhTokenPassword=yourPassword
两个值自行替换掉,注意将这个gradle.properties文件添加到git忽略,这两个值替换成你加密后的账号和密码,意思就是你的账号的密码在项目中不明文显示,ossrhToken
和ossrhTokenPassword
将在下面的解决问题中用到。
三、问题和解决方式
① 问题1
Cannot perform signing task ':easy:signMavenPublication' because it has no configured signatory
这个问题是我当时什么都没改动的情况下直接打算publish
到MavenCentral
上报的错,意思就是没有配置签名。
② 解决1
然后我的解决方式是在我的easy
模块下的build.gradle
中的signing{}
闭包下添加一行代码:
useGpgCmd()
如下图所示:
然后Sync Now
,再publish,出现了下一个问题。
③ 问题2
如下图所示:
具体错误信息:
Execution failed for task ':easy:publishMavenPublicationToMavenRepository'.
> Failed to publish publication 'maven' to repository 'maven'> Could not PUT 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/io/github/lilongweidev/easyview/1.0.6/easyview-1.0.6.aar'. Received status code 401 from server: Content access is protected by token* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
④ 解决2
解决方法:在我的easy
模块下的build.gradle
中的credentials{}闭包下修改如下代码:
username = findProperty("ossrhToken") as String password = findProperty("ossrhTokenPassword") as String
然后Sync Now
,再publish
就OK了,反正我是这样OK的。