前置条件
- 准备一个有效域名(用于命名空间认证)
- 安装gpg工具(macOS可通过
brew install gpg
安装)
一、注册Maven Central账号
1.1 账号注册
访问 Sonatype官网,使用GitHub或Google账号快捷登录
1.2 命名空间申请
- 进入命名空间管理页
- 输入反向域名格式的命名空间(如域名
cyclops.top
需填写top.cyclops
) - 点击【Submit】提交申请
1.3 命名空间验证
- 在弹出窗口中获取验证字符串(如
qilqixggnp
) - 登录您的DNS服务商控制台(以阿里云为例):
- 选择目标域名
- 添加TXT记录:
- 记录类型:TXT
- 主机记录:
@
(主域名,根据实际情况填写二级目录) - 记录值:验证字符串
- 返回Sonatype点击【Verify】
- 等待约10分钟DNS生效后刷新验证状态
1.4 生成访问凭证
- 进入账号管理页面
- 点击【Generate User Token】生成凭证(账号密码后续配置使用)
- 重要提示:重新生成会失效旧凭证
二、配置GPG签名
2.1 生成密钥对
shell
gpg --gen-key
- 密钥类型建议选择默认(直接回车)
- 设置有效期(建议3年:
3y
) - 输入姓名和邮箱
- 设置保护密码(请牢记)
2.2 查看密钥ID
shell
gpg --list-keys
示例输出:
ini
pub ed25519 2025-04-25 [SC] [有效至:2028-04-24]
5BB2BB19880821744E4A6B0B765B551B51147F35 # ← 密钥ID
uid [ultimate] Your Name <[email protected]>
sub cv25519 2025-04-25 [E]
2.3 发布公钥
选择以下任一方式上传至密钥服务器:
方式一:命令行上传
shell
gpg --keyserver keys.openpgp.org --send-keys YOUR_KEY_ID
方式二:网页上传
- 导出公钥文件:
shell
gpg --export -a "Your Name" > public-key.asc
- 访问 keys.openpgp.org 上传文件
三、Gradle项目配置
3.1 添加发布插件
在gradle/libs.versions.toml
中配置:
toml
[versions]
vanniktechMavenPublish = "0.31.0"
[plugins]
vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktechMavenPublish" }
3.2 应用插件配置
模块级build.gradle.kts
:
kotlin
plugins {
alias(libs.plugins.vanniktech.maven.publish)
}
mavenPublishing {
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
signAllPublications()
coordinates("top.cyclops", "knit", "0.0.1") # 按实际修改
pom {
name = "Knit"
description = "KotlinPoet DSL Enhancement"
url = "https://github.com/cyclops-top/knit"
licenses {
license {
name = "Apache-2.0"
url = "https://spdx.org/licenses/Apache-2.0.html"
}
}
developers {
developer {
id = "cyclops-top/knit"
name = "xxxx"
url = "https://www.cyclops.top"
}
}
scm {
url = "https://github.com/cyclops-top/knit"
connection = "scm:git:[email protected]:cyclops-top/knit.git"
developerConnection = "scm:git:ssh://[email protected]:cyclops-top/knit.git"
}
}
}
四、凭证配置
在~/.gradle/gradle.properties
中添加:
properties
# Sonatype凭证
mavenCentralUsername=生成的UserToken账号
mavenCentralPassword=生成的UserToken密码
# GPG配置(使用密钥ID后8位)
signing.keyId=51147F35
signing.password=密钥保护
# 如果没有secring.gpg使用指令gpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg
signing.secretKeyRingFile=/Users/yourname/.gnupg/secring.gpg
五、发布与验证
- 执行发布命令:
shell
./gradlew publishAllPublicationsToMavenCentralRepository
- 登录Sonatype控制台检查制品
- 首次发布需人工审核(约2工作日)
注意事项
- DNS验证可能需要等待最长72小时
- GPG密钥需妥善保管,建议备份
~/.gnupg
目录 - 发布后24小时内需完成人工审核,否则制品会被删除
- 版本号必须遵循语义化版本规范(SemVer)