发布java library到Maven Central仓库

Publishing a Java Library to Maven Central

网络上有很多文章有介绍如何发布,很多都说得很详细,这里大概记录一下一些相关信息。

相关网址:

  • 发布申请:sonatype官网 需要注册,并创建issue填写要发布项目的相关信息
  • 官方文档,如何发布: Deploying to OSSRH with Apache Maven – Introduction
  • gpg密钥相关: The GNU Privacy Guard官网 可以下载相关软件用于生成和管理gpg密钥,我使用的版本是 gpg (GnuPG) 2.3.7, libgcrypt 1.10.1,需要注意的是不同版本一些命令可能会有不同
  • 发布时会先发布到repo1仓库,如果发布成功的话,正常30分钟左右就在上面看到,然后大概要4个小时才会同步到Maven Central
  • 项目配置的仓库url 现在是s01开头这个,如果你的issue已经验证了groupId,并且指派者已经处理好的话,可以使用之前在官网注册的用户和密码登录这个仓库。

发布备忘

  1. 创建要发布的项目,以及配置好pom
    1. pom需要包含的信息:
      1. 项目url : <url><https://github.com/william-xu/java-basic></url> 我这里项目仓库在github网站。
      2. 开发者信息 <developers>
      3. 许可证信息 <licenses>
      4. 发布管理 <distributionManagement> 配置要发布到的仓库的信息
      5. scm信息(software configuration management)<scm>
      6. 【build】发布到maven central仓库,需要 nexus-staging-maven-plugin 插件
      7. 【build】发布同时要发布源码以及java文档,因此要添加两个相关插件
      8. 【build】发布的文件均需要签名(使用gpg插件,本地私钥签名,公钥发布到服务器以便相关方获取和验签)
  2. Sonatype网站注册,并创建issue,按照提示填写即可
  3. 创建issue后,会有个issue ID, OSSRH-xxxxxx 这样格式,这个ID在验证groupID时用到,由于使用自己网站域名,则在域名解析处添加一条TXT记录,记录值设置为上面的issue ID即可,linux下可以用 host -t txt [xxx.com](<http://xxx.com>) 进行验证,windows下则是使用 nslookup -qt=txt xxx.com 这个命令,如果配置成功,则可以在返回信息中看到之前配置的issue ID。
  4. 如果一切正常,则issue会自动转入等待指派者处理状态,如果没有问题,快可能当天,慢可能一两天就会处理完并由机器人转换为RESOLVED状态
  5. 这时候就可以执行maven的发布命令,将jar以及其他相关文件发布到maven central

gpg命令备忘

  • gpg –list-signatures –keyid-format 0xshort
  • gpg –keyserver keyserver.ubuntu.com –send-keys [your public key id]
  • gpg –keyserver keyserver.ubuntu.com –recv-keys [your public key id]
  • gpg –list-keys (gpg -k)
  • gpg –list-secret-keys (gpg -K)
  • gpg –full-generate-key

其他备忘

  • mvn deploy -Prelease 要手动输入密钥的passphrase
  • 好像可以运行时指定:mvn deploy -Prelease -Dgpg.passphrase=thephrase
  • Deploy Signed Artifacts
  • 发布时有些pom死活下载不下来,手动保存到本地仓库即可
  • gpg密钥如何导入到gpgsm的密钥库?

Comments are closed