必须使用 nexus staging 插件配合 sonatype ossrh 流程,核心是 gpg 签名、上传至 staging 仓库、手动或自动执行 close→release 操作,并等待同步至 maven 中央仓库。

Java 项目通过 Maven 发布构件到 Maven 中央仓库,必须使用 Nexus Staging 插件配合 Sonatype OSSRH(OSS Repository Hosting)流程,不能直接推送。核心是:签名 + staging + release。以下是精简、可落地的配置步骤。
1. 前置条件:完成 Sonatype 账号与仓库申请
这是硬性前提,缺一不可:
- 在 Sonatype Jira 注册账号,并提交一个
Open Source Project Repository Hosting类型的 issue(填写 groupId、项目 URL、SCM 地址等),等待人工审核通过(通常几小时到 1 天) - 审核通过后,你会获得一个 staging 仓库地址(形如
https://oss.sonatype.org/service/local/staging/deploy/maven2/),以及自动开通的ossrh仓库权限 - 确保你的
pom.xml中<groupid></groupid>与申请时一致(例如com.example),且域名拥有权可验证(如 GitHub 仓库名匹配、DNS TXT 记录或网站托管)
2. 配置 Maven GPG 签名(必需)
中央仓库强制要求所有构件带 GPG 签名(.asc 文件)。本地需生成密钥并配置 Maven 使用:
- 终端执行:
gpg --full-generate-key(推荐 RSA 4096),记下生成的 key ID(如ABCDEF1234567890) - 发布前上传公钥:
gpg --keyserver hkp://keyserver.ubuntu.com --send-keys ABCDEF1234567890 - 在
~/.m2/settings.xml中添加 profile,注入 GPG 凭据(避免命令行暴露):
<profile><id>gpg-signing</id><properties><gpg.executable>gpg</gpg.executable><gpg.keyname>ABCDEF1234567890</gpg.keyname><gpg.passphrase>your_passphrase_here</gpg.passphrase></properties></profile>
⚠️ 注意:生产环境建议用 gpg-agent 管理口令,避免明文写死;Mac 用户若用 GPG Suite,可能需设 <gpg.executable>gpg2</gpg.executable>。
3. 在 pom.xml 中配置 nexus-staging-maven-plugin
该插件负责将构件上传至 Sonatype staging 仓库,并支持自动 close 和 release。推荐使用最新稳定版(当前为 1.6.13):
<build><plugins><plugin><groupid>org.sonatype.plugins</groupid><artifactid>nexus-staging-maven-plugin</artifactid><version>1.6.13</version><extensions>true</extensions><configuration><serverid>ossrh</serverid><nexusurl>https://oss.sonatype.org/</nexusurl><autoreleaseafterclose>true</autoreleaseafterclose></configuration></plugin></plugins></build>
同时,必须绑定 maven-source-plugin 和 maven-javadoc-plugin(中央仓库拒收无源码/javadoc 的构件):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
<plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-source-plugin</artifactid><version>3.2.1</version><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-javadoc-plugin</artifactid><version>3.5.0</version><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals></execution></executions></plugin>
4. 配置 settings.xml 的服务器认证
让 Maven 知道如何登录 Sonatype(用户名=Jira 账号,密码=Jira 密码或 API Token):
<servers><server><id>ossrh</id><username>your-sonatype-username</username><password>your-sonatype-password-or-api-token</password></server></servers>
✅ 推荐使用 Sonatype 提供的 API Token(Security → Profile → User Token → Access Token),比明文密码更安全。
5. 一键发布命令
确认以上全部配置无误后,执行:
mvn clean deploy -P gpg-signing
过程说明:
-
clean deploy触发构建、签名、上传到staging仓库 -
-P gpg-signing激活 GPG 配置(含 key 和口令) - 插件自动调用
close(校验 staging 内容合规性),成功后立即release(同步到中央仓库) - 整个过程约 2–10 分钟,完成后可在 https://www.php.cn/link/4b7bffe0b6e29d949de3ea0f974007c6 查看状态
发布成功后,构件通常在 10–30 分钟内出现在 https://www.php.cn/link/596b42eb5fe47de3f9348936bfbdc345,首次发布可能需要数小时索引。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










