前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Android MavenCentral 仓库更新问题

Android MavenCentral 仓库更新问题

作者头像
晨曦_LLW
发布2024-11-28 13:40:35
发布2024-11-28 13:40:35
16700
代码可运行
举报
运行总次数:0
代码可运行

前言

  在去年的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,然后在用户信息哪里点击你的用户名出现的弹窗有两项,ProfileLogout,点击Profile,点击Profile页面。

  然后点击下拉选择User Token,进入User Token页面,这里面你可以访问和重置User Token

  点击 Access User Token,将会验证你的账号和密码,验证之后会出现一个一分钟后关闭的小弹窗,里面就有你的加密后的账户和密码,如下图所示:

这个信息保存之后放到gradle.properties中,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
ossrhToken=yourUsername
ossrhTokenPassword=yourPassword

  两个值自行替换掉,注意将这个gradle.properties文件添加到git忽略,这两个值替换成你加密后的账号和密码,意思就是你的账号的密码在项目中不明文显示,ossrhTokenossrhTokenPassword将在下面的解决问题中用到。

三、问题和解决方式

① 问题1
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
代码运行次数:0
运行
复制
Cannot perform signing task ':easy:signMavenPublication' because it has no configured signatory

  这个问题是我当时什么都没改动的情况下直接打算publishMavenCentral 上报的错,意思就是没有配置签名。

② 解决1

  然后我的解决方式是在我的easy模块下的build.gradle中的signing{} 闭包下添加一行代码:

代码语言:javascript
代码运行次数:0
运行
复制
useGpgCmd()

如下图所示:

然后Sync Now,再publish,出现了下一个问题。

③ 问题2

如下图所示:

具体错误信息:

代码语言:javascript
代码运行次数:0
运行
复制
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{}闭包下修改如下代码:

代码语言:javascript
代码运行次数:0
运行
复制
	username = findProperty("ossrhToken") as String               
	password = findProperty("ossrhTokenPassword") as String

然后Sync Now,再publish就OK了,反正我是这样OK的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 一、Maven central repository的账户迁移
    • 二、获取加密账户信息
    • 三、问题和解决方式
      • ① 问题1
      • ② 解决1
      • ③ 问题2
      • ④ 解决2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档