手动发布项目到maven中央仓库
- 2016-04-09 13:38:00
- zengde
- 原创 614
过程如下:
- 注册
- 提交一个issue(提出一个发布申请),告诉工作人员我要创建一个构件。
- 等待工作人员审批,会给你发邮件,在这个issue下给你comment说明通过或者哪里有问题。
- 上传构件
- 发布构建,并在哪个issue下告诉工作人员我发布了
- 等待审核,如果通过会告诉你需要release一下并在issue上告诉工作人员我release了
- 发布成功
这个过程比较漫长,慢在审核的过程,所以这个过程最好在晚上进行(我23点进行的,过了几分钟就回复我了),等待也是焦急而激动的,总体说来整个过程还是很有成就感滴~
1. 注册帐户
注册地址是
https://issues.sonatype.org/secure/Signup!default.jspa
字段我就不细说了,一看就懂,不过Email非常重要,之后和工作人员的交流全靠这个邮件了。
2. 创建一个 Issue
地址是
https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
这里需要特别说明的是Group Id,如果你是托管在Github或者Git@OSC 可以使用com.github.XXX或者net.oschina.XXX,我之前注册了个自己的域名com.xiaoleilu,所以在此填写这个group,剩下的可以依照实际情况填写,例如托管的地址等等。
3. 等待Issue审批
审批过程中出现过一些问题,第一次提交是因为我的Group Id 不符合规范,参考 http://central.sonatype.org/pages/choosing-your-coordinates.html修改后,接着收到 Configuration has been prepared。。。,status为RESOVLED后就可以开始下一步了。
4. 使用 GPG 生成密钥对
这个步骤是不是很突然?GPG是干嘛的?我开始也很迷茫,后来看官方文档说是签名构建用的,貌似为了保证你的构件不被第三方篡改,用于验证,神马原理呢?就是用这个东西在本地生成一个公钥和一个私钥,把公钥上传上去,当发布的时候用私钥签名一下(这个由maven-gpg-plugin搞定,不用我们自己来)。其实这个步骤也折腾了我好久,按照原博客的步骤,下载Gpg4win,我下载的gpg4win-light-2.3.1.exe版本,系统是Windows10,安装之后运行:
生成公钥私钥
gpg --gen-key
一路回车,然后输入用户名、邮箱等,最后重复两次输入Passphase(这个在发布的时候需要,在此牢记),如果你还是不清楚,看下这篇博客 GPG入门教程
查看公钥私钥
gpg --list-keys /home/loolly/.gnupg/pubring.gpg ------------------------------- pub 2048R/C990D076 2014-05-28 uid Looly <loolly@gmail.com> sub 2048R/48F6CC72 2014-05-28
其中 C990D076 是需要传到服务器的
发布公钥
gpg - - keyserver hkp://pool . sks - keyservers . net - - send - keys C990D076
5. 修改setting.xml
setting.xml这个文件存在于两个地方,一个是用户的Maven配置文件,在${user}/.m2/setting.xml,${user}表示你的用户目录,这个文件只对当前用户有效,另一个在你Maven安装目录的conf/setting.xml文件,这个是全局的配置文件,考虑到我的电脑只有自己用,所以只用全局配置文件添加内容如下:
<settings>
... <servers>
<server>
<id>oss</id>
<username>用户名</username>
<password>密码</password>
</server>
</servers>
... </settings>
在 https://oss.sonatype.org/用 第一步注册的用户名和密码登录之后,在用户名下方点击profile,选择user token,点击Access User Token获得用户名和密码后填入以上setting.xml
6. 发布到OSS
这一步主要是将jar包签名后,并上传到OSS的服务器,命令也比较简单
mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=artifact-version.pom -Dfile=artifact-version.jar mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=artifact-version.pom -Dfile=artifact-version-sources.jar -Dclassifier=sources mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=artifact-version.pom -Dfile=artifact-version-javadoc.jar -Dclassifier=javadoc
运行时会自动弹出一个 对话框,输入第4步设置的passphrase。如果看到有BUILD SUCCESS则成功
7. 发布构建
进入
https://oss.sonatype.org并登陆,会在左侧有个staging Repositories点击进入,在右侧面板找到你的构件,状态应该是open,你要将其置为closed,点击上方的close按钮即可。
接下来系统会自动验证有效性,如果你的Group Id和pom.xml没有错误,状态会自动变成closed,如果有问题,会在下面提示你那里有问题,加入有问题你可以点击drop按钮删掉这个构件,修改后重新执行步骤7。
接下来你需要点击release按钮发布你的构件。
8. 在Issue中通知工作人员
然后回到JIRA中你的Issue,写个comment,我写的是Component has been successfully issued.告诉工作人员我发布完成了,等待他们审核。审核通过后我们就可以在中央库搜索到我们的构件了!搜索的地址是:
http://search.maven
.org/
9. 总结
当可以搜索出来自己的构件的那一刻实在抑制不住心中的激动,各种朋友圈去发截图炫耀(虽然朋友圈里的同学都看不懂我截图这玩意儿是干啥的……),有种公司在美国上市的赶脚有木有!没办法,屌丝只有这些追求,让自己的代码被更多的人使用,会感到非常有成就感。