一步一步教你发布构件到Maven中央仓库

概要

相信作为一名合格的Java开发者,一定对Maven有一定的了解,本文不对Maven进行详细描述,关于Maven的更多介绍请移步:http://maven.apache.org/index.html

随着自己做Java开发的时间越来越长,相信每一个开发者或多或少都会有许多总结性的东西,也许你会想把这些东西总结并供别人使用,有一个方式就是将自己的构件发布到Maven中央仓库,这样大家都可以使用了。

本文将一步一步教你如何实现自己的构件发布到Maven中央仓库,我的整个过程是参考了以下博客的内容:
https://my.oschina.net/huangyong/blog/226738?spm=5176.100239.blogcont11826.8.46bKjj
我觉得这个文章写得很好,不过自己实际操作的过程中也会遇到一些问题,这里会陈述我在实践过程中遇到的任何问题并提出怎么解决,以免走太多的弯路。

注:为了撰写本文,我重新找了官方文档,自己也是一步一步跟着文档学着来做,相当于第二次学习了,这也是一种学习过程,本文中间穿插了很多一些细节的过程,可能看起来没那么清晰,后续我会另外写一篇文章来清晰描写每个步骤,算是总结性文档,这个是学习性文档吧,如果有兴趣可联系本人的邮箱:xiajiqiu1990@163.com一起探讨学习的方法,始终认为学会学习比什么都重要。

关于Sonatype

先看看这个官网:http://www.sonatype.org/
首页是这样子的:
这里写图片描述[sonatype 首页]
关于本文,我们只需要关注我上面用红色框框起来的部分,点击进去可以看到:
(注:实际的网址是:http://central.sonatype.org/
这里写图片描述

不过上面的视频都是需要翻墙才能访问的,这个就比较尴尬。
列举几个比较重要的教程地址:

OSSRH Guide: http://central.sonatype.org/pages/ossrh-guide.html
发布要求、规范:http://central.sonatype.org/pages/requirements.html
PGP签名使用:http://central.sonatype.org/pages/working-with-pgp-signatures.html
视频教程:http://central.sonatype.org/articles/2016/Feb/02/free-video-series-easy-publishing-to-the-central-repository/
发布项目文档首页:http://central.sonatype.org/pages/producers.html

注册JIRA帐号

说明

本文不仅仅是要告诉你如何发布自己的构件到中央仓库,还会详细描述我在这个过程中具体怎么做的,当然有些步骤我简化了,实际中我可能遇到更多的阻碍。

关于第一步为什么是注册JIRA帐号,这个不是我凭空造出来的,而是可以通过Snoatype的官网给出的引导文档出来的。

进入发布文档首页

首页地址在前面已经说过了,进入的方式是:
先进入:http://central.sonatype.org/
然后进入页面中的:
这里写图片描述
其中的 Learn how 就是:http://central.sonatype.org/pages/producers.html

正常来说就会去阅读这个文档,全是英文,不要怕,准备好有道词典,要克服自己,不懂的就马上进行翻译,阅读下来最后发现:
这里写图片描述
这其中说明了,有以下一些视频教你怎么简单地实现构件发布到中央仓库,然而这些视频都是Yutube上的,还得翻墙,无奈,可能一下子没有视频可看,发现下面有一句,说的是:
如果想获取更将详细的说明,可以根据他们的一步一步教程做,这可是个好东西,赶紧点进去看看:
具体的链接是:http://central.sonatype.org/pages/ossrh-guide.html

继续啃文档,一开始只是简单的对这个东西说明,后面才是干货,第二小节,初始化设置
这里写图片描述
文档中第一个步骤便是创建一个JIRA帐号

进入创建账号页面

经过上一部的分析,我们知道了第一个步骤就是要创建JIRA帐号,点击连接,进入:
注册页面:https://issues.sonatype.org/secure/Signup!default.jspa
这里写图片描述
这个就没什么好说的了,直接注册就好。
注册完成后就可以登录了

到此,你的 JIRA 项目就算是创建完成了,继续看文档。

创建一个新的项目Issue

紧接着上一步骤:
这里写图片描述
打开这个链接:
https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
接下来就是重点了:
这里写图片描述
每个表单项我还是简单说下吧:

表单项 说明
Summary 这就是项目说明,你直接可以写个人项目,搞个统称就行
GroupID 看到了吗,下面有一行说明怎么定义groupId的一些建议:http://central.sonatype.org/pages/choosing-your-coordinates.html

比如你喜欢放到github上或者oschina上,你完全可以用类似下面的:
com.github.{username} 比如 com.github.arvin
net.osc.{username} 比如 net.osc.arvin
Project URL
你就填写你的github或者git.oschina.net 的,或者个人主页也行
SCM URL
写成和Project URL 一样也没啥事

等待Issue通过

一般需要 1 ~ 2 天时间,需要耐心等候,审批通过后会发邮件通知,此外,在自己提交的 Issue 下面会看到 Sonatype 工作人员的回复。
这里写图片描述

他会问你是否是你自己的域名,你就恢复这个是你所在组织的域名就行,比如可以这么回复:
Yes,I’m themember of the organization with the domain ‘oschina.net’

回复后看起来就像:
这里写图片描述
然后还是继续等待,可能1~2天,成功后会收到回复:
这里写图片描述

阅读评审需求

在上一步骤中,我们的Issue通过了,我们来继续看看官方文档,再重申一下官方文档的链接如下:
http://central.sonatype.org/pages/ossrh-guide.html

我们继续看看目录:
这里写图片描述
此时应该是走到 Review Requirements 了,即评审要求,我也不知道是什么,先点进去看看吧,具体的文档内容如下:

Review Requirements
There are basic metadata and content requirements for componentsavailable in Central. We recommend getting familiar with them while yourrepositories are being created. For the details, see CentralComponent Requirements.
Helpful videos:
Requirements and Signing Tips
Project Object Model POM?!
Javadoc, Sources and Signing
上面大致就是说,对于中央仓库上的组件使用一定的规范的,你需要在创建你的个人组件(就是你要发布到中央仓库中的组件)之前要熟悉这些规范并且按照要求来。
更加详细的规范可以阅读另外一片文档:
CentralComponent Requirements
链接为:
http://central.sonatype.org/pages/requirements.html

上面还给出了几个视频,然而是需要翻墙滴,而且是英文,不过我们可以直接看文档就行,虽然比较乏味哈哈。
仔细阅读这个文档,你会发现有几个重要的约定要求,下面分别介绍(本人通过阅读英文文档大概总结出来,如果要阅读原汁原味的请自己阅读英文文档哈)

提供Javadoc和Sources

在我们新建组件的时候,必须发布javadoc和sources上去中央仓库,具体命名是通过你在 pom中定义的 groupId,artifactId和version,这个java开发者一般都很熟悉了,不再说明。
最终打包的要求满足以下格式:
artifactId-version-classifier.packaging
其中, artifactId 和 version 就不说了;关于classifier就是对这个包的说明,比如javadoc,或是sources, packaging表示包的形式,比如war、jar等

提供GPG/PGP 的签名文件

All files deployed need to be signed with GPG/PGP and a .asc file containing the signature must be included for each file.E.g. if you deploy the files
example-application-1.4.7.pom
example-application-1.4.7.jar
example-application-1.4.7-sources.jar
example-application-1.4.7-javadoc.jar
you need to include the files
example-application-1.4.7.pom.asc
example-application-1.4.7.jar.asc
example-application-1.4.7-sources.jar.asc
example-application-1.4.7-javadoc.jar.asc
If you need more help setting up and configuring GPG, pleaseread our detailedinstructions.

这个还是很好理解的,就是说你要发布到中央仓库的所有文件都必须经过 GPG或PGP的签名文件,如上面所示,举个例子吧:
这里写图片描述
我们发现,上面这些发布的文件都有一个对应的签名文件,即 .asc 文件

GPG 说明文档

好吧,这GPG到底是什么?上文说要求要GPG签名的文件上传,上面提到如果需要了解 GPG 的更多信息,可以进入一个文档:
http://central.sonatype.org/pages/working-with-pgp-signatures.html

想知道更多就必须进入看看GPG怎么玩,先来看看 GPG 文档使用的第一段怎么说:
One of the requirements for publishing your artifacts to the Central Repository, is thatthey have been signed with PGP. GnuPG or GPG is a freely available implementation of the OpenPGP standard.GPG provides you with the capability to generate a signature, manage keys, andverify signatures. This page documents usage of GPG as it relates to theCentral Repository. In a nutshell you will have to
create your own key pair
and distribute it to a key server so that users can validate it
大概意思就是说,部署组件到中央仓库要求需要GPG签名文件,而GnuPG 或者 GPG 是OpenPGP标准的一个实现,能够管理签名相关的东西,然后这个文档将告诉你如何生成自己的签名Key Pair 密钥对以及分发到 key server 以便别人可以验证签名(最后其实就是在发布的时候,Sonatype会通过key server上的信息进行验证deploy文件的有效性)

安装 GnuPG

根据文档指示,我们需要到网站https://www.gnupg.org/download/
下载相关文件来安装 GnuPG,我们可以看到,上面有两个段落,一个是说源码包,另一个是二进制RELEASE版本,当然我们需要二进制版本,看看如下内容:
这里写图片描述
通常,我们用的比较多的是Windows操作系统,刚好有Windows操作系统的版本,即 Gpg4win,好了,这个就是我们需要的,点进去看看:
具体链接:https://www.gpg4win.org/download.html
这里写图片描述
这个这么大的按钮,忍不住要点下去下载啊,把这个下载下来:
这里写图片描述
剩下的就是自己安装了,我就不说了,作为一个程序猿,你知道怎么安装。

安装完成后我们来验证下:
这里写图片描述
看到这个应该就是完成了安装。

生成 Key Pair 密钥对

一个密钥对允许你对你要发布的组件进行GPG签名和验证,可以通过以下命令来生成新的密钥对:
$ gpg –gen-key
我的生成过程如下:
这里写图片描述
当输入 O 的时候会弹出这个对话框,要求输入密码 passphrase,这个很重要,你一定要记住并且在进行发布的时候是需要用到的。
关于密码,会要求你输入两次,第二次弹出:
这里写图片描述
最终的结果如下:

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值