手动发布项目到maven中央仓库

2016-04-09 13:38:00
zengde
原创 586


过程如下:

  1. 注册
  2. 提交一个issue(提出一个发布申请),告诉工作人员我要创建一个构件。
  3. 等待工作人员审批,会给你发邮件,在这个issue下给你comment说明通过或者哪里有问题。
  4. 上传构件
  5. 发布构建,并在哪个issue下告诉工作人员我发布了
  6. 等待审核,如果通过会告诉你需要release一下并在issue上告诉工作人员我release了
  7. 发布成功

这个过程比较漫长,慢在审核的过程,所以这个过程最好在晚上进行(我23点进行的,过了几分钟就回复我了),等待也是焦急而激动的,总体说来整个过程还是很有成就感滴~


1. 注册帐户

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

字段我就不细说了,一看就懂,不过Email非常重要,之后和工作人员的交流全靠这个邮件了。

2. 创建一个 Issue

地址是 https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134 
创建Issue

这里需要特别说明的是Group Id,如果你是托管在Github或者[email protected] 可以使用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,安装之后运行:

  1. 生成公钥私钥

    gpg --gen-key 

一路回车,然后输入用户名、邮箱等,最后重复两次输入Passphase(这个在发布的时候需要,在此牢记),如果你还是不清楚,看下这篇博客GPG入门教程

  1. 查看公钥私钥

    gpg --list-keys /home/loolly/.gnupg/pubring.gpg
    ------------------------------- pub   2048R/C990D076 2014-05-28
    uid                  Looly <[email protected]>
    sub   2048R/48F6CC72 2014-05-28

其中 C990D076 是需要传到服务器的

  1. 发布公钥

    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/

搜索hutool

9. 总结

当可以搜索出来自己的构件的那一刻实在抑制不住心中的激动,各种朋友圈去发截图炫耀(虽然朋友圈里的同学都看不懂我截图这玩意儿是干啥的……),有种公司在美国上市的赶脚有木有!没办法,屌丝只有这些追求,让自己的代码被更多的人使用,会感到非常有成就感。



博客分类