JCenter已经提桶跑路,是时候学会上传到MavenCentral了
1. JCenter提桶跑路
用了这么多年的JCenter,终于要"跑路"了,还是有点依依不舍的。 详情可以参见本公众号的这篇文章: https://mp.weixin.qq.com/s/rgqSMyF9ROs-WOvK_aJZNQ
以前也写过JCenter上传的方法: 《2020最新通过novoda上传到JCenter的方法、技巧及遇到的坑》
不过现在如果再想上传包到JCenter已经是不可以的了,提示如下:
2. 转战Maven Central
Google在 Android Studio 4.2 把Maven Central作为gradle的默认配置了,所以我们还是把包放在官方指定的仓库中比较保险。
相比JCenter这样的第三方仓库,Maven Central的操作就稍显复杂,不过我们只要把思路理清理顺了,其实也没有那么难操作。 Step1:准备环境
OS: Windows10 IDE: Android Studio 4.1.3 Android Gradle Plugin Version: 4.1.3 Gradle Version: 6.5 GPG: Gpg4win-3.1.15 Step2:提交Issue
如果想要往Maven Central上传包,首先需要提交一个Issue进行申请。 申请网址:https://issues.sonatype.org/secure/Dashboard.jspa 如果没有账号,请先注册一个,这个账号跟后续登录maven仓库网站是一样的,需要注意。
提交Issue需要选择的类型和填写的内容如下图红框内所示:
这里需要特别注意 Group Id ,因为这涉及到域名,需要你拥有这个域名的所有权,不能随便填写,否则验证不通过。
如果没有域名,你可以使用你在GitHub上注册的账号,比如我这边是github.com/ddnosh,那么我们申请的Group Id可以写成com.github.ddnosh。
提交了Issue后,系统会马上给你发送一个comment,让你对Group Id进行验证,比如我们用的是GitHub网站的域名,系统让我们在账号下新建一个项目以便验证这个Group Id是你的:
如果是其它域名的话,需要在域名下进行验证,具体参考系统给你发的Comment。
我们在GitHub上创建好这个项目后,在这个Issue下面留言让它们去检测,系统如果检测成功,会发送如下信息:
这样我们就有权限去上传包了,下一步我们介绍如何上传包。 Step3:配置
官网也有介绍如何通过gradle上传包的,参考如下文章: https://central.sonatype.org/pages/gradle.html 不过我们今天介绍通过第三方的插件:Gradle Nexus Staging,进行上传。
下面就介绍下配置的一些信息。
首先,在项目根目录的build.gradle中添加apply:
apply plugin: "io.codearte.nexus-staging"
然后在dependencies中添加两个classpath:
classpath "com.github.dcendents:android-maven-gradle-plugin:2.1" classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.30.0"
接下来在项目的根目录下添加一个专门用于上传的gradle脚本 ,这里我们叫做publish-mavencentral.gradle,这是一个模板,可以直接拿来用,可以直接点击查看:publish-mavencentral.gradle
可以看到publish-mavencentral.gradle脚本里面有一些参数需要设定的,那么我们下面就是要定义这些参数,为了安全起见,这些参数我们全部定义在local.properties中: signing.keyId=AAAAAAAA signing.password=123 signing.secretKeyRingFile=C:/android/xxx.gpg ##nexus账号信息,也就是创建工单时的账号和密码 ossrhUsername=xxx ossrhPassword=456
后面的工作就是看看这5个参数如何设定的: ossrhUsername和ossrhPassword很简单,就是我们在【Step2:提交Issue】中注册的用户名和密码。
signing相关的3个参数是跟我们包的签名相关的,这里我们使用gpg4win,官网下载地址:https://www.gpg4win.org/index.html
接下来我们就介绍下signing.keyId、signing.password、signing.secretKeyRingFile是怎么定义的。 生成密钥对 gpg --gen-key
signing.keyId我们只需要取最后的8位; signing.password就是我们在生成密钥对过程中要求我们输入的;
如果需要查看keyId,可以输入如下命令: gpg --list-key signing.secretKeyRingFile 这个文件到底是什么文件呢?其实它就是gpg key的secret。 那么怎么获取呢?很简单,打开安装好的Gpg4win软件,这里名字叫做Kleopatra: 右键,选择Backup Secret Keys…,保存为gpg格式的文件,然后这个文件的路径就是signing.secretKeyRingFile的值。 Step4:上传包(jar/aar)
经过上面的准备工作,我们接下来就进入到激动人心的时刻了,将我们的包上传到Maven仓库,是不是很心动呢? 打开Android Studio右上角的Gradle,选择图示的publish,双击运行即可。
我们登录:https://s01.oss.sonatype.org/,账号密码就是我们注册Issue时的账号密码。 我们选择左侧的Staging Repositories,可以看到我们刚刚上传的包:
我们选中自己的包,然后点击"Close"按钮:
然后系统会帮我们对包进行一系列的检测工作,我们看到有一个错误:
Failed: Signature Validation
意思是包签名出错。原来我们本地用Gpg4win生成的密钥对,没有将公钥上传到官网验证包指定的服务器地址,通过右侧的日志我们也可以看到,系统对一些可以上传公钥的服务器进行验证时没有发现我们上传的公钥,于是就报错了。 解决方案也很简单,就是从右侧选一个服务器地址,将我们本地生成的公钥上传上去即可。 上传的命令如下:
gpg --keyserver http://keys.openpgp.org:11371 --send-keys xxxxxxxx
公钥也是要最后8位即可。
再次点击"Close"后可以看到,一系列的验证成功了。 然后我们点击"Release"按钮,将包正式地发布出去:
包发布后,并不能马上在Maven仓库看到,同样需要审核。 你会发现在原先的Issue里多了一个系统发送的Comment:
也就是你在https://s01.oss.sonatype.org/中过个几分钟就可以搜到你的包,如图的方式:
但是要在真正的Maven仓库(也就是通过implementation方式引入的库),还需要等待差不多2个小时。 到时候你可以通过https://search.maven.org/查询你的包,看看是否能查询到,比如通过包名的方式:
好了,把包上传到Maven Central的方法介绍完成!!!
牛顿的前半生本来想说说物质起源的故事,写了几篇后感觉到大家对科学的兴趣远不如诗词和笑话。这也许跟人们的生活状态有关。大的工作和社会压力不可能让人们有更足的时间去了解甚至从事科学。科学来源于兴趣
多方出台新一轮建设计划适度超前部署5G新基建多方正加紧绘制新一轮新基建规划图。包括工信部国家发改委等多部门明确将适度超前部署5G数据中心等新型基础设施建设。包括上海福建四川湖南安徽等20多个省(区市)明确了2022年5G数据
闪电评论以科技创新引领全面创新视频加载中齐鲁网闪电新闻2月8日讯全省2022年工作动员大会系统部署了十大创新工作任务。其中,加强科技研发创新排在首位。这就明确要求我们必须坚持科技创新在新时代现代化强省建设中的核
领域驱动设计(DDD)实践之路(第二篇)在领域驱动里面,infrastructure作为基础设施,是提供技术细节的模块。需要强调的是,很多人会误以为infrastructure就是传统的DAO层,其实infrastruc
查询表修改记录修改项目时,涉及到了Oracle中许多表的修改(包括增加删除字段,修改注释等)。由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了。后来在网上查找了一些资料,例如ww
iPhone播客将会是你的快乐源泉虎年有娱苹果播客7将会是你的快乐源泉我就在写这篇文章的时候我还在听着播客是的他的功能跟喜马拉雅一样不过最大的优点就是(没有官方。极简风的。全部免费。超多的英文资源)对于想学习英语练
2022最新Web前端经典面试试题及答案VUE篇1为什么选择VUE,解决了什么问题?vue。js正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue被设计为可以自底向上逐层应用。vue的核心库只关注视
资本的后半段的角力资本的后半段就是战略入侵,国家提倡生生生不是没道理的。要么自己人做到内部循环要么被外部蚕食。就想国内两大互联网巨头一样,没法再扩展时只能靠收购投资加碾压,能吃多少吃多少能消灭多少算
科普向三星赠送奥运选手手机是独有的权利,华为想送也不能的许多网友看到奥运选手被送三星手机,一边高呼三星土豪,一边叹息华为不送。可是叹息什么?三星是奥委会的全球合作伙伴,所谓合作伙伴不是随随便便就合作的,得交钱,得交一大笔钱,才能获得伙伴
为什么现在生活越来越好了,而年味儿却越来越淡了,这是为什么?生活有米面,肉鱼也常见,衣服又新款,成天如过年,孩子不觉淡,亲戚来回看,老人感到短,原先的东西,手机电视办,吃饱穿也暖。现在过年没有过年的氛围,疫情漫延,关门闭户,不放鞭炮,礼花,
苹果将于3月份推出iPhoneSE3和iOS15。4等新品据外媒最新报道,苹果新品发布会将在在3月8日举办,在当日的新品活动中将推出iPhoneSE35G和新款iPadAir5,从曝光的渲染图和外观设计来看,相较于上一代产品,iPhone