发布 Java 库到 Maven Central 的完整流程指南
适用于:Sonatype Central Portal(https://central.sonatype.com)
1. 注册账号并验证域名
- 访问 https://central.sonatype.com/account
- 使用 GitHub 或 Google 登录
- 前往“Namespaces”页面,申请你的 groupId(例如
com.mozihe
) - 添加 DNS TXT 记录完成验证(例如
@.mozihe.com
=your_token
) - 等待验证通过,Namespace 状态变为 Verified
2. 配置 GPG 签名
生成 GPG 密钥:
gpg --full-generate-key
gpg --list-secret-keys --keyid-format LONG
记录你的 GPG Key ID,例如:ABCDE123456
上传公钥:
gpg --keyserver keyserver.ubuntu.com --send-keys ABCDE123456
3. 本地开发准备
项目目录结构:
src/
pom.xml
确保 pom.xml
包含:
- groupId / artifactId / version
- license 信息
- scm 信息(GitHub 地址)
- developer 信息
- source/javadoc 生成插件
- GPG 签名插件
示例:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 基础构件坐标 -->
<groupId>com.mozihe</groupId>
<artifactId>onnx-spring-boot-starter</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>onnx-spring-boot-starter</name>
<description>Spring Boot Starter for ONNX Runtime in Java</description>
<url>https://github.com/mozihe/onnx-spring-boot-starter</url>
<!-- 开源协议 -->
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>
<!-- 源码托管地址 -->
<scm>
<url>https://github.com/mozihe/onnx-spring-boot-starter</url>
<connection>scm:git:git://github.com/mozihe/onnx-spring-boot-starter.git</connection>
<developerConnection>scm:git:ssh://git@github.com:mozihe/onnx-spring-boot-starter.git</developerConnection>
</scm>
<!-- 作者信息 -->
<developers>
<developer>
<id>mozihe</id>
<name>mozihe</name>
<email>zhujunheng2005@gmail.com</email>
</developer>
</developers>
<!-- Java 编译版本和 GPG 签名配置 -->
<properties>
<java.version>17</java.version>
<gpg.keyname>你的 GPG id</gpg.keyname>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.onnxruntime</groupId>
<artifactId>onnxruntime</artifactId>
<version>1.12.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- GPG 签名 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals><goal>sign</goal></goals>
</execution>
</executions>
</plugin>
<!-- 打包源码 jar -->
<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</goal></goals>
</execution>
</executions>
</plugin>
<!-- 打包 Javadoc jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals><goal>jar</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
4. 设置 Maven 的 settings.xml
路径:~/.m2/settings.xml
<settings>
<servers>
<server>
<id>ossrh</id>
<username>token-your-username</username>
<password>your-generated-password</password>
</server>
</servers>
<profiles>
<profile>
<id>release</id>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.passphrase>你的GPG密码</gpg.passphrase>
<gpg.keyname>你的GPG id</gpg.keyname>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>release</activeProfile>
</activeProfiles>
</settings>
5. 构建、签名并生成构件
mvn clean verify -P release
确保在 target/
中生成以下文件:
yourlib-1.0.0.jar
yourlib-1.0.0-javadoc.jar
yourlib-1.0.0-sources.jar
yourlib-1.0.0.jar.asc
yourlib-1.0.0-javadoc.jar.asc
yourlib-1.0.0-sources.jar.asc
yourlib-1.0.0.pom
yourlib-1.0.0.pom.asc
6. 生成 MD5 / SHA1 校验文件
创建 staging 目录:
mkdir -p staging/com/mozihe/onnx-spring-boot-starter/1.0.0
cp target/onnx-spring-boot-starter-1.0.0* staging/com/mozihe/onnx-spring-boot-starter/1.0.0/
cd staging/com/mozihe/onnx-spring-boot-starter/1.0.0
生成校验:
for f in *.jar *.pom; do
openssl md5 "$f" | awk '{print $2}' > "$f.md5"
openssl sha1 "$f" | awk '{print $2}' > "$f.sha1"
done
7. 打包 zip 上传包
cd staging
zip -r onnx-spring-boot-starter-1.0.0-bundle.zip com/
8. 发布到 Maven Central
- 访问 https://central.sonatype.com/publish
- 点击 “Publish Component”
- 填写相关信息
- 上传打好的 zip 包
- 验证通过后点击 “Publish”
9. 发布后验证
- Maven 下载测试:
mvn dependency:get -Dartifact=com.mozihe:onnx-spring-boot-starter:1.0.0
评论区