type
status
date
slug
summary
tags
category
icon
password
js
😀
这几天琢磨这把自己的工具箱发布到了Maven中央库,过程有点曲折,花了4天多,终于搞定了。
其实总结下来发布的过程是与Sonatype工作人员交互的过程,这个过程是在Sonatype的JIRA平台上完成的,过程如下:
  1. 注册
  1. 提交一个issue(提出一个发布申请),告诉工作人员我要创建一个构件。
  1. 等待工作人员审批,会给你发邮件,在这个issue下给你comment说明通过或者哪里有问题。
  1. 上传构件
  1. 发布构建,并在哪个issue下告诉工作人员我发布了
  1. 等待审核,如果通过会告诉你需要release一下并在issue上告诉工作人员我release了
  1. 发布成功
由于审核人员和我们这有时差,所以要加速的话,可以考虑在23点以后提交审批,这样得到回复也能比较快。不想熬夜的小伙伴就安心睡觉吧,第二天醒来,开开心心地查看自己的邮箱。
 

一、注册帐户

notion image
注意两点:
  1. Email一定要选择收的到的邮箱,所有进度通知都会发到这个邮箱里
  1. "Username"一定要用英文注册,因为他们的中央库系统不支持中文用户名,不然审核人员会让你重新注册一个账号。

二、创建一个 Issue

notion image
"Project"一定要选 "Community Support - Open Source Project Repository Hosting (OSSRH)"
"Issue Type"选 "New Project"
然后点下一步
notion image
"Summary" 填项目名称,尽量用英文
"Group Id" 要和项目的group id 相同,这里要特别注意,然后你有自己的域名,可以使用域名作为GroupId,比如我的GroupId就是"cn.reinforce";如果没有的话,就用代码托管站点的域名,比如:com.github.XXX
都填完以后点击“Create”,然后就等待官方人员审核了。如果是用的自己的域名,审核人员会让你验证域名的所有权。
notion image
我选择了TXT验证,很快就通过了,不过因为一开始注册的用户名是中文的,无法录入到系统,要求重新注册,然后使用新账号,在当前Issue下发一条评论。
notion image
通过审核后,会受到这样的消息:
notion image
在这之后,就可以开始提交我们的项目了。

三、生成GPG密钥(默认RSA算法即非对称加解密公私钥对)

需要下载一个GPG 来进行文件加密,windows 可以到地址 https://www.gpg4win.org/download.html 下载 按照步骤安装即可。
在安装目录的bin下打开Kleopatra即可
Windows操作系统下使用界面即可。最后输入密码即可
notion image

发布公钥(创建完成在界面最后面即可看到密钥ID) (Windows在CMD中进行)

1
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 密钥ID

查看公钥(能查看的到的话,就说明成功上传了,刚上传会有一定延迟)

1
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 密钥ID

四、准备上传

1. 安装Maven环境

Linux直接使用对应的命令安装,这里只介绍Windows下的方法.
(1)安装JDK,推荐1.8版本
(2)前往Maven官网下载zip包,地址:http://maven.apache.org/download.cgi
notion image
(3)解压到你想要的文件夹
(4)配置环境变量,"MAVEN_HOME"和"PATH"
notion image
notion image
(5)验证
在CMD中输入“mvn -version”,出现下图就是配置成功了
notion image

2. 修改Maven的settings.xml文件

注:settings.xml在.m2文件夹下
这里的id要与pom中snapshotRepository repository2个节点的id一致 且与plugins中org.sonatype.plugins中配置的configuration-serverId一致
username&password 配置是https://issues.sonatype.org/https://oss.sonatype.org/网站的用户名和密码,一般情况下默认是一致的
1234567891011
<settings>    ...    <servers>        <server>            <id>oss</id>            <username>用户名</username>            <password>密码</password>        </server>    </servers>    ...</settings>
pom.xml在Maven中央库的审核比较严格,必须有固定的一些字段,还有发布的构件必须包含字节码jar、源码jar、文档jar,这些都可以通过maven插件搞定,具体这个文件我就不贴了,请查看我的pom做参考:
其中必须字段是:
1. name
2. description
3. url
4. licenses
5. developers
6. scm
这里我按照原博客的方法,把发布限制在了一个profile里(Profile理解为一个构建行为的配置,每种行为对应一个profile,例如线上、测试的某些配置不同,就可以分为不同的profile执行,如果你还不明白就自行百度吧~),发布需要的source插件、javadoc插件、gpg插件都在这个profile里,这样只有在发布的时候才会生成源码包、文档API包和做gpg签名。distributionManagement则是定义了release和snapshot发布的地址,这个在Issue通过审核后工作人员会给你,还有就是snapshotRepository 与 repository 中的 id 一定要与 setting.xml 中 server 的 id 保持一致。

五、发布到OSS

打开CMD,切换到项目所在目录,输入以下命令:
1
mvn clean deploy -P release
正常情况下,会弹出一个输入框,要求输入之前生成的那个证书的密钥。如果没有弹出,可以在命令里加个参数:
1
mvn clean deploy -P release -Dgpg.passphrase=你的Passphase
(1)自动
如果你的pom文件的插件配置和我一样的话,等命令跑完,已经自动帮你发布完了。
(2)手动
如果没有自动close的话,进入https://oss.sonatype.org并登陆,会在左侧有个staging Repositories点击进入,在右侧面板找到你的构件,状态应该是open,你要将其置为closed,点击上方的close按钮即可。
notion image
接下来系统会自动验证有效性,如果你的Group Id和pom.xml没有错误,状态会自动变成closed,如果有问题,会在下面提示你那里有问题,加入有问题你可以点击drop按钮删掉这个构件,修改后重新执行步骤7。
接下来你需要点击release按钮发布你的构件。

六、在Issue中通知工作人员

回到Issue,发一句表名发布完成了。等待他们审核。审核通过后我们就可以在中央库搜索到我们的构件了。这里成功后,同步到各个搜索Maven的网站还要一段时间,我大约等了一个小时,search.maven.org上搜索得到了。
notion image

七、总结

总的弄下来还是很有成就感的,很有大公司的赶脚→_→,这只是一个个人用的工具,后续还会有几个通用工具包。
小伙伴们在使用过程中有任何问题,请在评论区留言欧。
 
JS实现打印完回调MySql5.7 使用全文索引
Loading...
吕行者
吕行者
吕行者
最新发布
如何做出网页版在线聊天时,有新消息浏览器标签闪烁的效果
2025-1-9
[CSS]超出N行时,截取并显示省略号
2025-1-9
CentOS下使用yum命令安装Jdk
2025-1-9
解决Tomcat8以后的版本,Tomcat启动缓慢的问题
2025-1-9
在Centos7中为Tomcat配置nginx反向代理
2025-1-9
闲着蛋疼,花30元和骗子玩玩= ̄ω ̄=
2025-1-9