使用gpg插件发布jar包到Maven中央仓库 完整实践

本文记录了在maven环境下使用gpg插件将 jar 包部署到中央仓库并快速检验和更新的完整实践过程。相对于网上其他教程使用oss-parent作为父工程的方法,这种方法入侵度低,自由度高,也是官方推荐使用的。实践过程解决了gpg验证以及javadoc注解不规范的问题。

文章目录

    • 先行知识
      • 1 项目基础配置
      • 2 Maven发布相关网址
      • 3 发布事项
    • 一 注册并提交工单(register sonatype)
    • 二 使用gpg生成密钥
    • 三 完成maven配置
      • 1 配置 setting.xml
      • 2 配置pom文件基本信息
      • 3 在pom文件里配置gpg相关插件
    • 四 完成第一次发布
      • 1 运行 deploy
      • 2 到issue添加comment
      • 3 查看 search.maven.org
    • 五 版本更新
    • 六 其他

先行知识

1 项目基础配置

首先需要注意项目的 groupId,下文注册sonatype账号时也需要填写 groupId ,两者最好一致,并确保你拥有该域名所有权,我推荐用GitHub个人主页作为对应地址。格式为 com.github.username
本文以如下配置为例:

    <groupId>com.github.linshenkxgroupId>
    <artifactId>rpc-netty-spring-boot-starterartifactId>
    <version>1.0.0.RELEASEversion>

2 Maven发布相关网址

在整个发布过程中,有以下3个关键网址,注意前2个共用一个账号。

  1. 工单管理:https://issues.sonatype.org
    负责申请上传资格及完成第一次上传,后续更新不需要使用,相当于一个启动装置。
  2. 构件仓库 : https://oss.sonatype.org
    上传的jar包会先存放到这里,在这里进行 Release 后即可发布到maven中央仓库。
  3. 镜像仓库: http://search.maven.org
    最终成功发布的jar可以在这里搜到。

3 发布事项

网上有些人说使用相同版本号部署可以覆盖原版本,经试验是不行的,也很好理解,对于同一个版本的jar包,怎么可能因为拉取时间的不同而导致获得内容的不同呢?所以,应该将每一次上传部署都看作不可逆操作,谨慎对待。

一 注册并提交工单(register sonatype)

首先进入 https://issues.sonatype.org 注册账号并登录
然后点击最上面的 Create创建Issue,选择Project和Issue Type如下
使用gpg插件发布jar包到Maven中央仓库 完整实践_第1张图片
除了这两个选择项外,其他的必填项按照提示填就好,需要特别注意的是,你要拥有GroupId对应的域名的所有权,私有域名的话需要验证所有权会比较麻烦(在Attachment项提供证书),个人的话最好就是使用项目对应托管平台的主页,这样可以省去验证的步骤。创建完成可见如下:
注意这个过程是需要后台管理员审核的,一般在2个小时左右即会有回复,在审核通过之前 Issue 的状态将是 open,通过后为 resolved ,有问题的话 Resolution 将显示 Unresolved 直到你解决后才会显示为 Fixed。
使用gpg插件发布jar包到Maven中央仓库 完整实践_第2张图片
项目的驱动将通过Comments来进行,如下,通过后管理员将添加如下comment

Configuration has been prepared, now you can:
Deploy snapshot artifacts into repository https://oss.sonatype.org/content/repositories/snapshots
Deploy release artifacts into the staging repository https://oss.sonatype.org/service/local/staging/deploy/maven2
Promote staged artifacts into repository ‘Releases’
Download snapshot and release artifacts from group https://oss.sonatype.org/content/groups/public
Download snapshot, release and staged artifacts from staging group https://oss.sonatype.org/content/groups/staging

前面两个仓库用于上传,分别对应工程的 snapshots版本和 release版本,要配置到pom文件里。
发布成功的工程可以通过后面两个仓库查看和下载,晚点会同步到中央仓库里。

二 使用gpg生成密钥

这一步我主要参考了官方指南 https://central.sonatype.org/pages/working-with-pgp-signatures.html 上面用命令行的方式一步步写得很清楚了,不过我发现其过程比较适用于Linux环境,Windows环境下有所不同
我使用的环境是window和maven,使用mac和gradle的也可以参考,但后面maven配置具体步骤会有不同,需要注意。
这里我推荐使用gpg的gui工具,可视化生成密钥,也可以使用命令行。
Windows的话先到 https://gpg4win.org/download.html 下载最新的版本,直接安装即可打开即可

  1. 新建密钥对(OpenPGP类型)
    这里需要填入名字和电子邮件,然后注意可以在高级设置那里将有效期一栏的小勾取消掉,即有效期无限,如下
    使用gpg插件发布jar包到Maven中央仓库 完整实践_第3张图片
  2. 确认信息并输入密码
  3. 选择将公钥上传到目录服务
    注意:如果这里不点的话后面分发后将无法在服务器找到对应公钥
    使用gpg插件发布jar包到Maven中央仓库 完整实践_第4张图片
  4. 右键选择生成的证书在服务器上发布
  5. 根据密钥ID在服务器上查找公钥
    最终必须保证这一步成功!如下
    使用gpg插件发布jar包到Maven中央仓库 完整实践_第5张图片

你可能感兴趣的:(持续开发/集成,从零开始写分布式RPC框架,gpg,发布,maven中央仓库,jar包)