专栏首页earthchen的专栏发布属于自己的 jar 包
原创

发布属于自己的 jar 包

发布属于自己的 jar 包

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

过程

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

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

jira 验证账户

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

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

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

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

gpg签名问题

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

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

$ gpg --generate-key

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

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

$ gpg --full-generate-key

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

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

注意key =72963F6B33D962380B1DC4BD8C446B86DF855F85

keyId =DF855F85 (最后八位)

仓库地址问题

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

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"

总结

这里总结一下流程

  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 上进行条件判断,是否进行签名

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

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

关注作者,阅读全部精彩内容

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何将自己的jar包发布到mavan中央仓库

    这里有一个小小的坑就是如果你没有域名的话groupId可以写com.github.你的github名或者io.github.你的github名。如果你写域名的...

    Java学习录
  • 开发属于自己的composer

    1.新建一个git仓库 备注:可以在github建立,如果要建立私有的composer,可以自己搭建git仓库 2.初始化composer文件 执行compo...

    苦咖啡
  • 创建属于自己的第一个Composer/Packagist包

    Composer 是 PHP 的一个依赖管理工具,Composer 不是一个包管理器,它涉及 “packages” 和 “libraries”,但它在每个项目的...

    沈唁
  • 在Debian中打造属于自己的deb包

    问题:如果你要在Debian系统中发布一款软件或者一个包,该如何做呢?如果你的项目中有各种二进制包,该如何维护呢?如果你自己做了一款小小的实用软件,该如何与朋友...

    ternturing
  • 学会发布自己的npm包

    卡少
  • 【译】发布你自己的npm包

    如今,NPM已经成为javascript库的事实上的注册表。特别是React,Angular和其他前端库主导的网络和node.js接管的服务器端,NPM软件包比...

    嘉明
  • 如何发布自己的 python 包?

    本文以笔者实际发布的 python 包 imgkernel 为例。因此,在本文所有出现 imgkernel 的地方,都替换成读者自己项目或包的名称。 同时,im...

    我是一条小青蛇
  • 开发一个属于自己的app

    打开手机,可以看见手机上各种各样的应用,每一款软件都是别人开发的,想想就觉得不满足,怎么就没有我自己的app呢!想法一旦产生就止不住的往外流露。那怎么办?当然是...

    大家一起学编程
  • android 自己制作Jar包 和 修改 现成的 Jar包文件

    杨奉武
  • 第一次发布自己的npm包

    在做表单的时候,会遇到很多的表单项的验证工作,几乎很多验证都是重复的,有一个比较好的lodash库来做了这些工作,但是里面有些方法和实际的业务工作有些不符。比如...

    贺贺V5
  • 在PyPI上发布自己的Python包(一)

    Coxhuang
  • 如何发布自己的NPM包(模块)?

    按照提示填写初始化信息,我的模块名称为:finitxu-npm-test,初始版本号:v1.0.0。

    城市中的游牧民族
  • 开发一个属于自己的Spring Boot Starter

    通过以上的描述,我们可以简单地将starter看作是对一个组件功能粒度较大的模块化封装,包括了所需依赖包的整合及基础配置和自动装配等。

    端碗吹水
  • 搭建属于自己的wiki

    因此,我们调研尝试使用了多款知识库类型的系统,包括使用Web+Markdown文档组合的站点,但都不是很理想。直到我们遇到了Confluence,这个系统几乎满...

    用户5521279
  • 从零实现一套属于自己的UI框架-发布到npm

    如今前端工程师的要求越来越高了,需要掌握的技术点越来越多了,会一些基本的前端技能完全适应不了快速变化的前端领域了。接下来我将从零实现一个自己的UI组件库并发布到...

    Nealyang
  • 开发属于自己的第一款IDEA插件!

    写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了...

    良月柒
  • 开发属于自己的第一款 IDEA 插件!

    写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了...

    芋道源码
  • [超详细] 手把手带你发布自己的专属模块!

    我们在写代码的时候,有时会开发出一个让自己觉得牛x闪闪的模块,自我陶醉已经满足不了自己蠢蠢欲动的心,只想赶紧让更多的人知道,毕竟分享是一种优秀的品德(实际是为了...

    编程文青李狗蛋
  • 三、DockerFile 定制属于自己的专属镜像

    上篇文章我们知道了怎么操作镜像和容器,到基础都是从已经存在的镜像开始的,那我们自己怎样搭建一个镜像并使用它呢?接下来就让我们学习使用dockerfile 创建属...

    程序员爱酸奶

扫码关注云+社区

领取腾讯云代金券