Maven仍然是目前使用人数很多的、非常受欢迎的项目构建工具。其方便之处在于:我们只需在配置文件pom.xml中引入依赖和插件,他就可以自动从中央仓库下载、配置并运行程序。不过假设我们自己写了一个jar外部包,想放到Maven中央仓库并使得别人和我们自己使用的时候更加方便,应该怎么做呢?
1,第一次注册账户 - 去Sonatype网站注册账户并申请工单
进入issues.sonatype.org,注册一个账户,然后点击“新建”按钮创建一个工单:
如下图,项目选择:Community Support - Open Source Project Repository Hosting (OSSRH)
问题类型选择:New Project
其余必填项如下图:
图中有*的是必填项,其余留空或者保持默认即可,然后新建工单等待管理员审核。
项目地址可以随便填一个你的项目的Github仓库地址。这里还是强调一下组id的填写,组id需要根据你自己的域名或者开源仓库地址来填。
如果你是用域名,下面给出几个例子:
域名
组id
swsk33.top
top.swsk33
swsk33-xxx.top
top.swsk33-xxx
开源仓库:
仓库地址
组id
gitee.com/swsk33
com.gitee.swsk33
github.com/swsk33
io.github.swsk33
后面在问题-我的报告中可以追踪issue的情况:
等待管理员审核。审核完成,管理员会在下面提示你让你验证这个域名是你的或者证明Gitee或者Github空间是你的,例如我的:
可以根据其回复的步骤进行。
上述由于我把组id填成了com.github.xxx而他要io.github.xxx,所以他要我需要修改组id(update the Group ID field),如果第一次按照上述要求填对了就不用修改组id,直接按照其回复的步骤进行即可。
意思是让我在我的Github账户中新建一个公开仓库,其空间地址为:https://github.com/swsk33/OSSRH-81835
新建完成后,点击上面Respond按钮开启工单,让管理员去验证。
等待验证完成,管理员就会接着回复你验证成功,这就说明你的工单通过了,可以上传项目了。
这个时候可以关闭问题了:
如果是用域名,则管理员会让你给你的域名添加一个TXT解析,然后他来验证:
给根域名添加TXT解析即可,内容如上图他说的(with the text后面那个OSSRH-xxx):
后续步骤和上述是一样的。
2,配置我们的项目
现在我们可以上传项目了。
先进入我们的Maven安装目录,编辑目录里面的conf文件夹里面的settings.xml文件,找到里面的
这个配置是配置我们上述注册的Sonatype账户用户名和密码,使得我们的项目可以上传上去。
再配置我们要发布的项目的pom.xml如下形式:
简单的说一下这个配置文件:
上面给出的示例,大家可以全部复制作为一个模板去使用,自己进行修改其中的内容。
3,生成秘钥并上传工程
在上传项目时,我们必须先生成秘钥才能上传。
安装git,右键打开git bash输入生成秘钥命令:
gpg --gen-key
然后会提示要你输入姓名和邮箱地址:
输入完成,会弹出个窗口让你设置这个秘钥的密码并确认:
自己设定一个密码并牢记,因为后面要用到这个密码的。
然后输入命令查询已经生成的秘钥:
gpg --list-keys
在pub字段下面有一个十六进制数,那就是这个秘钥的ID。
然后我们要把这个秘钥上传至公钥服务器,使用如下命令:
gpg --keyserver keyserver.ubuntu.com --send-keys 秘钥ID
秘钥ID就是我们刚刚gpg --list-keys命令查到的自己的秘钥的ID,复制过去即可。
然后验证是否成功地上传到了服务器:
gpg --keyserver keyserver.ubuntu.com --recv-keys 秘钥ID
如果两条命令执行输出结果都如下说明成功:
这样,就完成了秘钥的配置了。
接下来,在我们的项目文件夹下打开Git Bash或者其它终端,输入上传项目命令:
mvn clean deploy
执行过程中会弹出一个窗口要求输入秘钥密码,就是输入我们先开始生成秘钥时设置的秘钥密码。
等待上传,最后显示绿色的Build Success说明上传成功。
4,去仓库发布项目到Maven中央仓库
上面的步骤只是把项目传到了Sonatype上了,还没有发布出去。
进入s01.oss.sonatype.org,登录,点击旁边的Staging Repositories即可看到我们发布的项目。
勾选项目,点击close按钮,开始进行项目校验。
我这里已经点过了,所以是灰色的。
再点击下面的active标签可以查看close的进度:
显示All rules passed: Central Sync Requirement就说明校验通过,可以发布了。
再点击上面的release按钮即可发布到中央仓库了。
完成后,大约过个2个小时,你就可以在central.sonatype.com搜索到你的发布的项目了!
5,以后再发布的时候
以后发布项目,如果groupId不变的话,我们就不需要再去申请工单了。直接重复上述的2、3、4部分中的部分关键步骤即可。
上述settings.xml已经配置了servers,就不用再次配置了,即第2部分配置settings.xml可以省略了。秘钥也已经生成过了,也不需要再次生成了, 即第3部分的秘钥生成也不需要了。不过如果更换了电脑,那就要重新配置settings.xml并重新生成并上传秘钥了。
参考文档:
Sonatype中央仓库发布概述:传送门
Sonatype配置GPG密钥指引:传送门
Sonatype发布Maven配置说明:传送门
Sonatype发布项目配置pom.xml样例:传送门
Sonatype项目发布指引:传送门
Maven源码生成插件使用文档:传送门
Maven Javadoc插件使用文档:传送门
Maven GPG插件使用文档:传送门