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,并且指派者已经处理好的话,可以使用之前在官网注册的用户和密码登录这个仓库。
发布备忘
- 创建要发布的项目,以及配置好pom
- pom需要包含的信息:
- 项目url :
<url><https://github.com/william-xu/java-basic></url>
我这里项目仓库在github网站。 - 开发者信息
<developers>
- 许可证信息
<licenses>
- 发布管理
<distributionManagement>
配置要发布到的仓库的信息 - scm信息(software configuration management)
<scm>
- 【build】发布到maven central仓库,需要
nexus-staging-maven-plugin
插件 - 【build】发布同时要发布源码以及java文档,因此要添加两个相关插件
- 【build】发布的文件均需要签名(使用gpg插件,本地私钥签名,公钥发布到服务器以便相关方获取和验签)
- 项目url :
- pom需要包含的信息:
- 到Sonatype网站注册,并创建issue,按照提示填写即可
- 创建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。 - 如果一切正常,则issue会自动转入等待指派者处理状态,如果没有问题,快可能当天,慢可能一两天就会处理完并由机器人转换为RESOLVED状态
- 这时候就可以执行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的密钥库?