在公司时都是发布到私有的 nexus 中,没有踩过什么坑,最近写了个小玩意需要推送到中央仓库中,提供大家使用,踩了一些坑,在这记录一下。
相关过程,我这里就不再赘述了,这里贴一个别人博客https://segmentfault.com/a/1190000018026290
流程什么的大同小异,别人的流程里也介绍了很清楚了,但是由于一些版本问题,或者系统更新,遇到了一些别的问题,下面我来分别介绍一下
参考文章让我去https://issues.sonatype.org/
注册个账号,创建个project
, 这部没有问题,但是很多没有提到回让你验证你的账户所有者的问题,
根据不同的方式可能有不同的验证方式,这次我再提 project 的时候是填写的是 github
仓库,
Central OSSRH
在下面评论让我去创建一个指定名称的仓库,创建完继续等待就好
总体来说,需要关注
Central OSSRH
的回复,按说明去操作就好
本来我参考别人的一些生成密钥,上传公钥等操作一切正常,但是在项目里推送 jar 包时抛出了异常说什么未知的签名算法(当然是英文)
我这里怀疑是 gpg 的版本问题,网上的相关资料都说用
$ gpg --generate-key
来生成密钥,这是个简版命令,只需要你输入必要的参数来生成密钥,在 gradle 那边的打包插件可能没有兼容新版的签名算法(我猜的)
后来,根据报错,我使用了完整版的命令
$ gpg --full-generate-key
然后加密算法
我这里选择的 rsa
,再次生成了一次,并推送了相关公钥
再次尝试发布 jar 包,这次便成功了。
注意key =
72963F6B33D962380B1DC4BD8C446B86DF855F85
keyId =
DF855F85
(最后八位)
网上大多数文章在maven
或 gradle
中配置的仓库地址为
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
我首先也无脑相信了,在解决gpg
的问题之后,在 push 的时候又开始报403 forbidden
这时,我开始排查是我密码错误了还是签名证书没配对。查了一圈,证书是换了又换,最后参考jira
中的评论发现,
原来是换域名了。。。。
修改为如下地址即可
def releasesRepoUrl = "https://s01.oss.sonatype.org/content/repositories/releases"
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots"
这里总结一下流程
Central OSSRH
回复给你的流程和发布域名maven-publish
、signing
两个插件,并完善相关的配置,可以参考https://github.com/EarthChen/ipplus360-java/blob/master/ipplus360-awdb-java/build.gradle
Maven Central Repository
查看发布到中央仓库很麻烦,有没有简单一些的方式呢?
当然有,jitpack
就是这么个东西,不需要注册那么多账户,搞什么签名,
jitpack
是什么这里就不介绍了,可以去官网自己看下
使用jitpack
,你只需要正常写代码,然后吧代码推到 github 上,就结束了
如果你是多模块的项目结构,最后引用的时候只需要引用模块的名字即可
如果你的项目同时配置了发布中央仓库和 jitpack,由于 sign 的问题,jitpack 可能会失败(由于sign 参数只存在与你本地),那么你可以在本地的 task 上进行条件判断,是否进行签名
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。