相信很多小伙伴自己都会有一些包,我们可以将包发布中央仓库,然后直接通过maven来使用这些包,下面就整理下如何将包发到中央仓库。
新建项目
第一步,我们需要在sonatype上注册一个账号,这一步就不再演示了。
注册好账户之后,然后我们来创建项目。点击新建按钮,问题类型 选择 New Project,如下所示:
在该页面中,注意需要添加groupId,项目的描述信息等,填写完毕后进行保存。用过jira的同学对这个系统肯定十分熟悉,因为就是jira。
注意如果groupId以前没有在这个上面使用过,那么第一次使用需进行注册,然后才可以发包,新建好的项目会收到以下评论:
翻译过来有以下几点:
如果你有自己的域名,groupId就可以是将域名反转过来的,比如fun.mingshan,那么你可以:
在你的域名添加一条DNS解析,需要是TXT 类型的,指向当前创建的issue
重新打开这个一条issue
如果你没有自己的域名,那么你可以:
使用github这种开放的域名,不过需要创建一个仓库来验证github账户的权限
大概是这样,我选用有域名添加一条DNS解析这种操作,十分快捷。DNS解析规则如下:
上面的操作完,等issue的状态变为已解决时,会收到一条评论:
我们接下来就可以将包发送到中央仓库了。
更新pom.xml文件
增加开源协议,坐着,SCM信息等,具体信息可以参考:
增加插件:
增加distributionManagement:
更新maven settings.xml文件
配置PGP公匙信息
Windows下使用gpg4win来进行配置。下载地址 https://www.gpg4win.org/get-gpg4win.html。
下载安装完后,打开命令行执行:gpg --gen-key,来生成公匙信息,注意此步需要输入sonatype 网站上的用户名,邮箱信息,必须保持一致。如下所示:
生成的过程中,会有个弹框要求输入Passphase信息,这个是密钥的密码,同样需要记牢。十分重要,后续在进行发布包的时候要用到的,如下:
上面操作完之后,会生成公匙,需要将公钥发布到 PGP 密钥服务器,两个密钥服务器都发布一下:
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 公钥ID
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 公钥ID
查询公钥是否发布成功
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 公钥ID
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 公钥ID
使用 gpg --list-keys 命令查询配置好的公私钥信息
打包推送
使用mvn clean deploy进行编译部署,会将当前SNAPSHOT包推送到OSS 里面,注意这一步需要用到Passphase。
发布RELEASE
大致流程:
Maven发布 -> Sonatype Close -> Sonatype Release
Maven发布
关于如何利用maven进行发布的操作,这里就不详细介绍了,可以参考另一篇文档: Maven发布RELEASE包到云效私有仓库并打TAG
主要有两步操作:mvn release:prepare 和 mvn release:perform。
Sonatype Close
发布完正式RELEASE 后,此时会将正式包推送到 staging Repositories,进入oss.sonatype,选择你刚才发布的包,然后点击Close 按钮,会弹出确认框,如下所示:
Sonatype Release
Close 完之后,我们就可以进行Release了。点击Release按钮,需要等待一会,可以点击下边的Activity选项卡中查看状态。等待一会,会收到邮件,告诉你已经同步中央仓库了。
至此,流程已经走完了。同步到中央仓库的时间比较漫长,耐心等待即可。
加图标
另外,我们看到很多仓库都有很多图标,比如编译状态,中央仓库版本等,类似下面这种:
我们可以使用:https://shields.io/ 这个网站来生成,选择对应的项目生成就可以了。
参考
https://central.sonatype.org/publish/publish-maven/
https://www.cnblogs.com/songyz/p/11387978.html
https://blog.csdn.net/pdsu161530247/article/details/105429597
title: 如何发包到中央仓库-完整教程
categories: Maven
tags: [Maven]
author: Mingshan
date: 2022-01-21