为了把我们多年开发的框架分享给开发者通过maven库引用,所以花了些时间把框架打包发布到了Maven Central,中间遇到了很多问题,一步步记录下来,以免后面新手踩坑。
很多Java开发者都很乐意把自己做好的组件发布到网上共享给大家使用,Maven Central是一个Java组件共享中心,但首次发布的确会遇到很多问题,希望通过我们的亲身经历,让看到这篇文章的幸运开发者少走弯路,顺利完成jar发布到Maven Central.
1、注册账号
访问https://issues.sonatype.org/,点击Sign up进行注册。
账号注册
输入邮箱,全名,用户名和密码进行注册,这里密码要求比较复杂,建议保存到电脑里,用户名和密码后面发布项目时需要用到。
填写用户注册信息
2、新建项目的问题
注册成功后登录并新建一个项目问题:
新建项目问题
选问题类型为New Project
填写项目信息内容
这里要注意的是Group Id的填写,如果有自己的域名的,一般就是域名反过来,如果没有域名的,可以用github应用地址(这里我没有用过,大家可以找一下相关教程)。
这里我只讲域名的情况,域名一定要真实而要自己可以做解析的,后面会有要求对域名增加一条TXT的DNS解析(你可以提前做好解析,后面应该能省掉一步,很有可能一步到位)。
项目地址(Project URL)可以填自己项目网站或开源地址都行,SCM填写项目开源平台git地址(可以是空项目,但一定要有,而且要公开的所有人都能访问那种,不能是私有的)。
用户名(username)就填填写你注册的用户名即可。点击新建完成问题提交。
3、平台工作人员审核
问题提交后,平台工作人员审核并提出问题,像我们是用域名的情况,审核人员会要求你对域名做一个TXT的DNS解析,我们照做即可,做完后要记得把问题状态重新改为开放状态。
审核负责人要求增加域名解析
这里有一个插曲,这个jkas.org域名也是我们的,本来打算用这个域名的,由于某种原因这个域名国内用不了,我们转到国外服务商那里,结果搞到解析不了(心里那个苦),这里不细表。
域名解析方式如下,增加一条TXT解析记录,记录值为上面审核员要求的,其实就是OSSRH-问题的ID :
XX云域名解析后台
添加完成后,回到问题那里,把问题状态改为开放(open),然后等审核员审核,当收到如下评论的时候,同时问题状态也会变成已解决状态,那就恭喜你,项目已经审核通过,就可以进入jar包的提交操作流程了。
审核负责人回复通过评论
问题状态变成已解决
4、环境准备
java环境安装,这个不讲了,如果这个都不知道,你就可以不用看下去了。
Manve安装,去官方下载进行安装(https://maven.apache.org/download.cgi)。
GPG安装,windows操作系统下载gpg4win(https://www.gpg4win.org/)并完成安装
配置Maven的 settings.xml,注意这里有两个地方有这个文件,一个是在mavne安装目录下conf文件夹下面,一个是在(用户目录/.m2/)目录下:这里配置用户目录下这个即可,做如下配置:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 " >http://maven.apache.org/xsd/settings-1.0.0.xsd">
sonatype-nexus-snapshots
你注册时的用户名
你注册时的密码
sonatype-nexus-staging
你注册时的用户名
你注册时的密码
配置项目的POM.xml,根据自己项目情况修改信息及依赖,剩下照抄:
坑点,注意 distributionManagement节点里的提交地址。
4.0.0
cn.org.jkas
jkas
2.33
jar
Jkas
Easy Fast Powerful
${projectUrl}
GNU GENERAL PUBLIC LICENSE, Version 3.0
https://www.gnu.org/licenses/gpl-3.0.txt
repo
master
[email protected]:soonec/jkas.git
scm:git:[email protected]:soonec/jkas.git
scm:git:[email protected]:soonec/jkas.git
你注册时的用户名
你注册时的邮箱
公司名称
${projectUrl}
javax.mail
1.4.7
release
src/main/java
**/*.properties
org.apache.maven.plugins
maven-source-plugin
2.2.1
package
jar-no-fork
org.apache.maven.plugins
maven-javadoc-plugin
2.9.1
private
true
UTF-8
UTF-8
UTF-8
-Xdoclint:none
package
jar
org.apache.maven.plugins
maven-gpg-plugin
1.5
verify
sign
org.apache.maven.plugins
maven-compiler-plugin
3.0
1.8
true
true
UTF-8
false
org.apache.maven.plugins
maven-release-plugin
2.5.1
cn.org.jkas
maven-jar-plugin
true
org.jkas.core.About
sonatype-nexus-snapshots
Sonatype Nexus Snapshots
https://s01.oss.sonatype.org/content/repositories/snapshots/
sonatype-nexus-staging
Nexus Release Repository
https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
UTF-8
1.8
1.8
https://gitee.com:soonec/jkas.git
ossrh
2、打包
生成密钥:
打开CMD命令行,输入:gpg --gen-key
这里会要求你输入用户名和邮箱 ,输入你注册时的用户名,邮箱,会提示让你确认输入的是否正确,按相应的字母可以修改用户名和邮箱,按o字母进行输入确认,这时要求你输入密钥密码(一个关键的Passphrase),输入一个密码后确认即可。要记住这个密钥密码,后面提交时需要用到,建议也保存到电脑。
密钥用户名和邮箱输入
密钥密码输入
这时可以用gpg --list-keys命令查看新建的密钥:
查看已经生成密钥
关键一步,发送公钥到服务器:XXXXXX为你的公钥,坑点(注意发送地址)
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys XXXXXXXXX
查看公钥上传结果 :XXXXXX为你的公钥
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys XXXXXXXXX
激动人心的时候来了,开始上传jar包:
进入项目根目录下命令行执行:mvn clean deploy -P release
编译并上传项目jar包
过程中会要求你输入密钥密码,输入之前产生密钥时输入的密钥密码即可。
当出现,BUILD SUCESS时则成功上传到了sonatype
这时登录: https://s01.oss.sonatype.org/ (坑点,注意登录地址)
也是用之前注册的用户名和密码登录,登录后,点击左侧Staging Repositories,右侧则出现我们刚提交的项目,选中项目,点击左上方close按钮,改变项目状态为closed状态。这里会有项目问题校验,如果close失败,根据问题提示进行修改,重新提交。close成功后,选中项目,再点击左上方的release按钮发布到maven central操作。
上传成功的包列表
这个操作做完后,去到之前创建问题那里发一条评论,说已经release成功即可。
发一条release生成的评论
工作人员也会回复你(其实是机器人回复的)
这个时候你已经能通过这个
https://repo1.maven.org/maven2/,地址查看到你发布的项目了,4个小时后就能同步到Maven Central(https://search.maven.org/)了。
通过https://repo1.maven.org/maven2/浏览到项目
漫长漫长漫长漫长漫长漫长漫长漫长漫长漫长漫长漫长漫长的等待.......,4小时后,终于可以在Maven Central(https://search.maven.org/)搜索到提交的项目了。
搜索项目名称即可有结果和版本
项目详细信息及引用方式
至此,整个jar发布到Maven Central 的过程就完成了。
把地址分享给你的开发小伙伴们去引用就可以啦!