前言
近段时间做了一个基于SpringBoot的小组件,Github地址是github.com/Licoy/encry…,然后想为了方便一点就发布到Maven中央库上去,不过这一波操作下来可谓是一波三折~
正文
第一步
首先,我们需要issues.sonatype.org提交一个新的issue,其中Summary
填写自己的项目摘要信息,Group Id
填写自己的github地址即可,例如com.github.licoy
,如果您要使用自己的域名作为GroupId的话是需要进行验证的,由于时差关系,有时候我们在工作的时候他们审核人员在休息,所以我用了两天时间才完成验证,有兴趣的同学可以看看:
issues.sonatype.org/browse/OSSR…;当您的issue状态变成RESOLVED
就可以进行下一步操作了,否则是没有上传权限的。
第二步
在项目的pom.xml
中引入Sonatype的通用oss-parent:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
增加发布信息:
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<connection>scm:git:git://github.com/Licoy/encrypt-body-spring-boot-starter.git</connection>
<developerConnection>scm:git:ssh://github.com:Licoy/encrypt-body-spring-boot-starter.git</developerConnection>
<url>http://github.com/Licoy/encrypt-body-spring-boot-starter/tree/master</url>
</scm>
<developers>
<developer>
<name>Licoy</name>
<email>licoycn@foxmail.com</email>
<organization>https://www.licoy.cn</organization>
<timezone>+8</timezone>
</developer>
</developers>
dependencyManagement
build
profiles
distributionManagement
配置请参考:github.com/Licoy/encry…
第三步
配置maven的setting,添加Sonatype的oss账号信息:
<servers>
<server>
<id>releases</id>
<username>username</username>
<password>password</password>
</server>
<server>
<id>snapshots</id>
<username>username</username>
<password>password</password>
</server>
</servers>
将上述配置中的username
以及password
换成自己的Sonatype账号和密码即可。
第四步
生成GPG-KEY,我是使用git客户端来生成的,使用如下命令:
gpg --gen-key
输入命令,敲击回车开始生成,前面的信息选择默认的即可,然后填写自己的Name以及Email等信息,值得注意的一点是在输入passphase
的时候一定要记住您输入的内容,因为后面会用到,然后将生成的gpg公钥上传到gpg服务器:
gpg --list-keys #查看gpg公钥列表
gpg --keyserver hkp://pool.sks-keyservers.net:11371 --send-keys 8D7F6196 #上传
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 8D7F6196 #查看是否上传成功
不过我一般都是同时上传到几个GPG服务上:
gpg --keyserver hkp://keys.gnupg.net:11371 --send-keys 8D7F6196
gpg --keyserver hkp://pool.sks-keyservers.net:11371 --send-keys 8D7F6196
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 8D7F6196
gpg --keyserver hkp://keys.gnupg.net:11371 --send-keys 8D7F6196
gpg --keyserver hkp://pool.sks-keyservers.net:11371 --send-keys 8D7F6196
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 8D7F6196
第五步
到这一步就可以上传部署了,执行:
mvn clean javadoc:jar deploy -P release -Darguments="gpg.passphrase=gpgPassword" -Dmaven.javadoc.skip=true
将上方的gpgPassword
换成自己生成gpg-key时的passphase
参数的值,然后回车即可部署上传到snapshots,当界面显示BUILD SUCCESS
时,就已经成功将项目编译上传到https://oss.sonatype.org了。
第六步
登录oss.sonatype.org,账号密码就是snapshots的账号密码,登录之后然后选择staging Repositories:
然后找到自己groupID的构件,勾选然后点击上方的Close
按钮进行验证,系统会自动验证该构件是否满足指定要求,当验证都通过之后,再点击Release
以及填写相关描述来发布该构件,到这一步你就可以在在oss.sonatype.org内搜索到自己的项目了。
第七步
到自己的issue内回复“我已经成功部署好第一个发行版”,那么工作人员会进行给你同步到其他的仓库,只是第一次需要这样后面就不会了,至此,所有操作已经完成。
后记
这几天为了上传到Maven居然早上4点起来回复工单,否则就又要等待一天,看来只要心里有信念什么都不是事儿~
不过话说回来,这次也整体的了解了发布的流程,这对于后面如果做其他的工具进行发布的时候会相对来说简单很多,实践就是一个学习的过程,同理:学习也是一个实践的过程。