Maven 发布 jar 到中央仓库
官方文档:https://central.sonatype.org/register/central-portal/
注册账号
链接:https://central.sonatype.com/
新建命名空间
登录系统后,点击【Publish】->【Namespace】->【Add Namespace】
- 可以按照下面的要求来创建:
- GitHub:io.github.myusername
- GitLab:io.gitlab.myusername
- Gitee:io.gitee.myusername
- Bitbucket:io.bitbucket.myusername
可参考:https://central.sonatype.org/register/namespace/
验证命名空间
需要验证命名空间来证明这个命名空间是你独有的,需要在对应的地址(如:Github)创建一个开源的仓库,名称就是你点击【Verify Namespace】的名称。
在按钮【Verify Namespace】那里,会有一个名称类似【io.github.test】的仓库,在地址(如:Github)中创建一个同名的仓库,然后点击【Verify Namespace】,等待验证成功。
创建 push 的账号和密码
登录系统后,点击右上角的【View Account】,点击【Generate User Token】,点击【ok】,生成 username 和 password。
注意:只会在生成的时候显示一次,请保存好。
设置 settings.xml
把上面生成的 username 和 password 填入 settings.xml 中(增加一个 server 节点),如下:
<servers>
<server>
<id>central</id>
<username>NxG643</username>
<password>nQheMlinuaWHaALc78m23XGGJH3gCHH8a4</password>
</server>
</servers>注意:
<id>central</id>:为仓库的 id。 可以是任意值,但需要和 pom.xml 中 central-publishing-maven-plugin 插件配置的 publishingServerId 保持一致。
下载并安装 GPG 工具
GPG 用于创建 asc 文件用于验证你的文件的正确性和安全性。
下载地址:https://gnupg.org/download/index.html
找到 GnuPG binary releases,下面有 windows 版本的 Gpg4win(如:gpg4win-4.4.1.exe), 及其它操作系统的版本。
双击安装 gpg4win-4.4.1.exe。
在安装目录找到 Kleopatra.exe 工具,双击打开。
- 创建 GPG 密钥对。点击【文件】->【新建密钥对】->【创建个人 OpenPGP 密钥对】。
- 填写名称和邮箱(邮箱应该是可选的,如需要可填写中央仓库账号的邮箱),【高级设置】中可修改有效期。
- 设置 passphrase:勾选
使用密码句保护生成的密钥。确认。- 填写 passphrase。自己想一个密码,如:12345678
- 在服务器上发布。创建完成确认后,在 Kleopatra 中选中刚才创建的密钥对,并右键选择在服务器上发布。
- 配置 MAVEN_GPG_PASSPHRASE 环境变量:
MAVEN_GPG_PASSPHRASE=<passphrase>- maven 中 maven-gpg-plugin 插件会自动读取系统环境变量中的 MAVEN_GPG_PASSPHRASE。
注意:如果创建密钥对时,忘记勾选
使用密码句保护生成的密钥, 可以右键选择【更改密码句】,然后填写 passphrase。
pom.xml 配置
至少需要以下 maven 插件。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 禁用严格的文档检查 -->
<doclint>none</doclint>
</configuration>
</plugin>
<!-- GPG
1. 需要安装 gpg4win-4.4.1.exe,并创建要给 OpenPGP 密钥对证书(邮箱填写中央仓库账号的邮箱),勾选`使用密码句保护生成的密钥`复选框,输入 passphrase 保存,并右键【在服务器上发布】。
2. 配置系统环境变量:MAVEN_GPG_PASSPHRASE=<证书的 passphrase>
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<!-- 在 Maven 生命周期的 verify 阶段触发签名操作。该阶段位于 package 之后、install 之前,适合进行签名验证。 -->
<phase>verify</phase>
<goals>
<!-- 调用插件的 sign 目标,对已打包的 artifacts(如主 JAR、源码 JAR、POM 文件等)进行签名。 -->
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 需要在 settings.xml 中配置 <server><id>central</id> ......其他配置 </server> -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central-publishing-maven-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
<waitUntil>validated</waitUntil>
</configuration>
</plugin>
</plugins>mvn deploy
运行 mvn deploy 命令,会自动打包、签名、验证并发布到中央仓库。
