发布自己的jar包到maven中央仓库
准备工作
github账号
需要在github上创建项目并上传项目代码
sonatype账号
maven中央仓库的代码通过Sonatype来管理OSSRH仓库,所以需要提前注册好, 点击注册
配置GPG
发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。因此,我们需要在本地安装并配置GPG。本人开发机操作系统是manjaro,自带gpg命令行软件,其他操作系统gpg安装方式请自行搜索。
使用命令 gpg2 –generate-key 生成一个新的key,期间会要求输入姓名、邮箱和密码
使用命令
gpg2 –send-keys [用户标识] 发送公钥到公共服务器

项目发布
项目发布申请
在Sonatype菜单栏选择新建
弹出的对话框里项目选择 Community Support - Open Source Project Repository Hosting (OSSRH),问题类型选New Project

Group Id 填写 io.github.username,project url则是你github项目链接,SCM url则是你项目git clone的那个地址
创建完成后会收到电子邮件,要求你验证group id,按邮件要求在github上创建一个新的空项目
完成邮件要求后记得将工单状态从waiting for response修改为open,审核通过后会收到邮件告知你环境已经准备好了,你可发布项目到中央仓库了

设置maven
Sonatype最后发的邮件里面有 说明文档 链接
按照文档说明,首先在maven的setting.xml配置文件里面添加一个server
<settings>
<servers>
<server>
<id>ossrh</id>
<username>your-jira-id</username>
<password>your-jira-pwd</password>
</server>
</servers>
</settings>
接着加入下面的配置,该配置也可以放到pom文件里,但pom文件上传到公共仓库后是公开的,有安全问题,所以建议放到setting.xml里
<properties>
<gpg.executable>gpg2</gpg.executable>
<gpg.passphrase>the_pass_phrase</gpg.passphrase>
<gpg.keyname>0x2E150E61</gpg.keyname>
</properties>
gpg.keyname的值可以通过命令 gpg2 –list-signatures –keyid-format 0xshort找到,这个命令输出结果类似下面
pub rsa3072/0x2E150E61 2023-06-13 [SC] [有效至:2025-06-12]
38E6D894A2B9A7DFD486EAB4A6D418F72E150E61
uid [ 绝对 ] wenkiam <zwjatjx@gmail.com>
sig 3 0x2E150E61 2023-06-13 wenkiam <zwjatjx@gmail.com>
sub rsa3072/0xC7B92C92 2023-06-13 [E] [有效至:2025-06-12]
sig 0x2E150E61 2023-06-13 wenkiam <zwjatjx@gmail.com>
其中 sig 3 那行的0x2E150E61就是我们需要的gpg.keyname
配置项目pom.xml文件,填写项目信息、开源许可协议,SCM信息,开发者信息等,这些信息都是必填的,否则无法通过校验
<project>
<name>starcloud-vertx-spring</name>
<description>use vertx with spring</description>
<url>https://github.com/Wenkiam/starcloud-vertx-spring</url>
<licenses>
<license>
<name>BSD 3-Clause</name>
<url>https://spdx.org/licenses/BSD-3-Clause.html</url>
</license>
</licenses>
<scm>
<connection>https://github.com/wenkiam/starcloud-vertx-spring.git</connection>
<url>https://github.com/wenkiam/starcloud-vertx-spring</url>
</scm>
<developers>
<developer>
<name>your_name</name>
<email>your_email</email>
<roles>
<role>Developer</role>
</roles>
<timezone>+8</timezone>
</developer>
</developers>
</project>
配置插件
<build>
<plugins>
<!-- 此插件用于生成源码jar包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 此插件用于生成javadoc-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 此插件用于gpg签名-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<keyname>${gpg.keyname}</keyname>
</configuration>
</execution>
</executions>
</plugin>
<!-- 此插件用于管理发布到中央仓库的流程 -->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
配置远程仓库地址,id对应settings.xml里面的server id
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
使用maven发布
完成上述配置,则可通过deploy命令进行打包上传,将jar包发布到Sonatype OSSRH仓库。
mvn clean deploy