前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >发布属于自己的 jar 包

发布属于自己的 jar 包

原创
作者头像
earthchen
修改2021-05-04 22:10:39
4850
修改2021-05-04 22:10:39
举报
文章被收录于专栏:earthchen的专栏

发布属于自己的 jar 包

在公司时都是发布到私有的 nexus 中,没有踩过什么坑,最近写了个小玩意需要推送到中央仓库中,提供大家使用,踩了一些坑,在这记录一下。

过程

相关过程,我这里就不再赘述了,这里贴一个别人博客https://segmentfault.com/a/1190000018026290

流程什么的大同小异,别人的流程里也介绍了很清楚了,但是由于一些版本问题,或者系统更新,遇到了一些别的问题,下面我来分别介绍一下

jira 验证账户

参考文章让我去https://issues.sonatype.org/注册个账号,创建个project, 这部没有问题,但是很多没有提到回让你验证你的账户所有者的问题,

根据不同的方式可能有不同的验证方式,这次我再提 project 的时候是填写的是 github仓库,

Central OSSRH在下面评论让我去创建一个指定名称的仓库,创建完继续等待就好

总体来说,需要关注Central OSSRH的回复,按说明去操作就好

gpg签名问题

本来我参考别人的一些生成密钥,上传公钥等操作一切正常,但是在项目里推送 jar 包时抛出了异常说什么未知的签名算法(当然是英文)

我这里怀疑是 gpg 的版本问题,网上的相关资料都说用

代码语言:txt
复制
$ gpg --generate-key

来生成密钥,这是个简版命令,只需要你输入必要的参数来生成密钥,在 gradle 那边的打包插件可能没有兼容新版的签名算法(我猜的)

后来,根据报错,我使用了完整版的命令

代码语言:txt
复制
$ gpg --full-generate-key

然后加密算法我这里选择的 rsa,再次生成了一次,并推送了相关公钥

再次尝试发布 jar 包,这次便成功了。

注意key =72963F6B33D962380B1DC4BD8C446B86DF855F85

keyId =DF855F85 (最后八位)

仓库地址问题

网上大多数文章在mavengradle中配置的仓库地址为

代码语言:txt
复制
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中的评论发现,

原来是换域名了。。。。

修改为如下地址即可

代码语言:txt
复制
def releasesRepoUrl = "https://s01.oss.sonatype.org/content/repositories/releases"
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots"

总结

这里总结一下流程

  1. 注册https://issues.sonatype.org/
  2. 创建 project,填写信息
  3. 验证账户/域名
  4. 等待Central OSSRH回复给你的流程和发布域名
  5. 在项目中配置maven-publishsigning两个插件,并完善相关的配置,可以参考https://github.com/EarthChen/ipplus360-java/blob/master/ipplus360-awdb-java/build.gradle
  6. push,并去4中提供的域名中查看一下是否存在
  7. 去 issue 回复一下你已经发布了,等待审核
  8. Maven Central Repository查看

发布到 jitpack

发布到中央仓库很麻烦,有没有简单一些的方式呢?

当然有,jitpack就是这么个东西,不需要注册那么多账户,搞什么签名,

jitpack是什么这里就不介绍了,可以去官网自己看下

使用jitpack,你只需要正常写代码,然后吧代码推到 github 上,就结束了

如果你是多模块的项目结构,最后引用的时候只需要引用模块的名字即可

如果你的项目同时配置了发布中央仓库和 jitpack,由于 sign 的问题,jitpack 可能会失败(由于sign 参数只存在与你本地),那么你可以在本地的 task 上进行条件判断,是否进行签名

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发布属于自己的 jar 包
    • 过程
        • jira 验证账户
        • gpg签名问题
        • 仓库地址问题
      • 总结
        • 发布到 jitpack
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档