折腾了几天,终于把一个小组件MyBatis-batch 发布了中央仓库,做个笔记记录下。
- 注册 sonatype JIRA 帐号并配置 settings.xml
我是先在 sonatype 上发布,然后由 sonatype 自动同步到中央仓库的。首先要在 sonatype 注册一个 JIRA 帐号,
在 $M2_HOME/conf/settings.xml
的 servers
标签下添加如下配置:
<server>
<id>sonatype-nexus</id>
<username>sonatype 登录名</username>
<password>sonatype 密码</password>
</server>
- 在 github 添加 ssh key
Maven 构建的时候,会自动操作 github,比如创建 tag 。
用 ssh-keygen 生成一对秘钥,在 https://github.com/settings/keys 页面可以添加 SSH key。
- 生成 GPG key
sonatype 要求对上传的组件进行校验,需要 gpg key。
生成key 用命令 gpg --gen-key
,会要求输入一些信息,
查看生成的key:
$ gpg --list-keys
/c/Users/coderbee/.gnupg/pubring.gpg
------------------------------------
pub 2048R/C74F60E4 2016-12-24
uid bruce.liu <wen866595@163.com>
sub 2048R/27062C6D 2016-12-24
2048R/C74F60E4
中的 2048 表示 key 的位数,后面的 C74F60E4
的 key id,上传用到的。
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys key-id
-
在 sonatype 上创建一个 project issue
地址:https://issues.sonatype.org
,登录后点击大大的Create
按钮,选择 Project 为Community Support - Open Source Project Repository Hosting (OSSRH)
,填写相关信息,创建后等待审核,审核通过后会有邮件提醒的。邮件里有些信息可以仔细看看,比如第一次发布时要在这个 issue 下 comment,后续发布不用。 -
配置 pom.xml
pom.xml 的配置可参考https://github.com/wen866595/MyBatis-batch/blob/master/pom.xml
。
下面的配置是 snapshot 和 release 版的发布地址,其中 <id>sonatype-nexus</id>
要跟前面 settings.xml
里配置的一致。
<distributionManagement>
<snapshotRepository>
<id>sonatype-nexus</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>sonatype-nexus</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
sonatype 对于 pom.xml 必须包含哪些元素是有要求的。要先发布 -snapshot
版,然后才能发布正式版,即不带 -snapshot
的。
# 通过 profile 发布,此法不会自动在 github 上创建一个 release 。
# 发布 snapshot 版
mvn clean deploy
mvn versions:set -DnewVersion=1.1.0
mvn clean deploy -P release
#---------------------------------------- 通过 profile 发布 end
# 在 github 创建一个 release
mvn release:clean release:prepare
# 发布的是 snapshot 版。
mvn release:perform
上面的命令执行成功后,登录 https://oss.sonatype.org/#stagingProfiles
找到自己的项目,然后 close
、release
,如果是第一次发布,要再去前面的 issue 上提个 comment 说明一下,然后等审核,审核通过后jar 就能同步到中央仓库了,这个同步需要一定的时间。
参考文档
Deploying to OSSRH with Apache Maven
欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。