发布组件到 Maven 中央仓库

折腾了几天,终于把一个小组件MyBatis-batch 发布了中央仓库,做个笔记记录下。

  1. 注册 sonatype JIRA 帐号并配置 settings.xml
    我是先在 sonatype 上发布,然后由 sonatype 自动同步到中央仓库的。首先要在 sonatype 注册一个 JIRA 帐号,

$M2_HOME/conf/settings.xmlservers 标签下添加如下配置:

<server>
    <id>sonatype-nexus</id>
    <username>sonatype 登录名</username>
    <password>sonatype 密码</password>
</server>
  1. 在 github 添加 ssh key
    Maven 构建的时候,会自动操作 github,比如创建 tag 。
    用 ssh-keygen 生成一对秘钥,在 https://github.com/settings/keys 页面可以添加 SSH key。

  1. 生成 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

  1. 在 sonatype 上创建一个 project issue
    地址: https://issues.sonatype.org,登录后点击大大的 Create 按钮,选择 Project 为 Community Support - Open Source Project Repository Hosting (OSSRH),填写相关信息,创建后等待审核,审核通过后会有邮件提醒的。邮件里有些信息可以仔细看看,比如第一次发布时要在这个 issue 下 comment,后续发布不用。

  2. 配置 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 找到自己的项目,然后 closerelease ,如果是第一次发布,要再去前面的 issue 上提个 comment 说明一下,然后等审核,审核通过后jar 就能同步到中央仓库了,这个同步需要一定的时间。

参考文档

Deploying to OSSRH with Apache Maven

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据