零、前言

这几天琢磨这把自己的工具箱发布到了Maven中央库,过程有点曲折,花了4天多,终于搞定了。

其实总结下来发布的过程是与Sonatype工作人员交互的过程,这个过程是在Sonatype的JIRA平台上完成的,过程如下:


1. 注册

2. 提交一个issue(提出一个发布申请),告诉工作人员我要创建一个构件。

3. 等待工作人员审批,会给你发邮件,在这个issue下给你comment说明通过或者哪里有问题。

4. 上传构件

5. 发布构建,并在哪个issue下告诉工作人员我发布了

6. 等待审核,如果通过会告诉你需要release一下并在issue上告诉工作人员我release了

7. 发布成功


由于审核人员和我们这有时差,所以要加速的话,可以考虑在23点以后提交审批,这样得到回复也能比较快。不想熬夜的小伙伴就安心睡觉吧,第二天醒来,开开心心地查看自己的邮箱。


一、注册帐户

注册地址是 https://issues.sonatype.org/secure/Signup!default.jspa 

image.png

注意两点:

  1. Email一定要选择收的到的邮箱,所有进度通知都会发到这个邮箱里

  2. "Username"一定要用英文注册,因为他们的中央库系统不支持中文用户名,不然审核人员会让你重新注册一个账号。


二、创建一个 Issue

地址:https://issues.sonatype.org/secure/CreateIssue!default.jspa

image.png

"Project"一定要选 "Community Support - Open Source Project Repository Hosting (OSSRH)"

"Issue Type"选 "New Project"

然后点下一步


image.png

"Summary" 填项目名称,尽量用英文

"Group Id" 要和项目的group id 相同,这里要特别注意,然后你有自己的域名,可以使用域名作为GroupId,比如我的GroupId就是"cn.reinforce";如果没有的话,就用代码托管站点的域名,比如:com.github.XXX

都填完以后点击“Create”,然后就等待官方人员审核了。如果是用的自己的域名,审核人员会让你验证域名的所有权。

image.png


我选择了TXT验证,很快就通过了,不过因为一开始注册的用户名是中文的,无法录入到系统,要求重新注册,然后使用新账号,在当前Issue下发一条评论。

image.png


通过审核后,会受到这样的消息:

image.png


在这之后,就可以开始提交我们的项目了。


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

需要下载一个GPG 来进行文件加密,windows 可以到地址 https://www.gpg4win.org/download.html 下载 按照步骤安装即可。


在安装目录的bin下打开Kleopatra即可


 Windows操作系统下使用界面即可。最后输入密码即可

093847_ptp1_1444646.gif


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

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

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

 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 

image.png


(3)解压到你想要的文件夹

(4)配置环境变量,"MAVEN_HOME"和"PATH"

image.png

image.png

(5)验证

在CMD中输入“mvn -version”,出现下图就是配置成功了

image.png


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/网站的用户名和密码,一般情况下默认是一致的

<settings>
    ...
    <servers>
        <server>
            <id>oss</id>
            <username>用户名</username>
            <password>密码</password>
        </server>
    </servers>
    ...
</settings>

pom.xml在Maven中央库的审核比较严格,必须有固定的一些字段,还有发布的构件必须包含字节码jar、源码jar、文档jar,这些都可以通过maven插件搞定,具体这个文件我就不贴了,请查看我的pom做参考:

https://gitee.com/hhfate/fate-utils/blob/master/pom.xml

其中必须字段是:

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,切换到项目所在目录,输入以下命令:

mvn clean deploy -P release

正常情况下,会弹出一个输入框,要求输入之前生成的那个证书的密钥。如果没有弹出,可以在命令里加个参数:

mvn clean deploy -P release -Dgpg.passphrase=你的Passphase

(1)自动

如果你的pom文件的插件配置和我一样的话,等命令跑完,已经自动帮你发布完了。

(2)手动

如果没有自动close的话,进入https://oss.sonatype.org并登陆,会在左侧有个staging Repositories点击进入,在右侧面板找到你的构件,状态应该是open,你要将其置为closed,点击上方的close按钮即可。

image.png

接下来系统会自动验证有效性,如果你的Group Id和pom.xml没有错误,状态会自动变成closed,如果有问题,会在下面提示你那里有问题,加入有问题你可以点击drop按钮删掉这个构件,修改后重新执行步骤7。

接下来你需要点击release按钮发布你的构件。


六、在Issue中通知工作人员

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

image.png


七、总结

总的弄下来还是很有成就感的,很有大公司的赶脚→_→,这只是一个个人用的工具,后续还会有几个通用工具包。


小伙伴们在使用过程中有任何问题,请在评论区留言欧。


赞助本站,网站的持续发展离不开你们的支持!一分也是爱ヾ(◍°∇°◍)ノ゙
 本文链接: ,花了好多脑细胞写的,转载请注明链接喔~~
登陆
      正在加载评论