发布库到Maven Central完整指南

前置条件

  1. 准备一个有效域名(用于命名空间认证)
  2. 安装gpg工具(macOS可通过brew install gpg安装)

一、注册Maven Central账号

1.1 账号注册

访问 Sonatype官网,使用GitHub或Google账号快捷登录

1.2 命名空间申请

  1. 进入命名空间管理页
  2. 输入反向域名格式的命名空间(如域名cyclops.top需填写top.cyclops
  3. 点击【Submit】提交申请

1.3 命名空间验证

  1. 在弹出窗口中获取验证字符串(如qilqixggnp
  2. 登录您的DNS服务商控制台(以阿里云为例):
    • 选择目标域名
    • 添加TXT记录:
      • 记录类型:TXT
      • 主机记录:@(主域名,根据实际情况填写二级目录)
      • 记录值:验证字符串
  3. 返回Sonatype点击【Verify】
  4. 等待约10分钟DNS生效后刷新验证状态

1.4 生成访问凭证

  1. 进入账号管理页面
  2. 点击【Generate User Token】生成凭证(账号密码后续配置使用)
  3. 重要提示:重新生成会失效旧凭证

二、配置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 <your.email@example.com>
sub   cv25519 2025-04-25 [E]

2.3 发布公钥

选择以下任一方式上传至密钥服务器:

方式一:命令行上传

shell 复制代码
gpg --keyserver keys.openpgp.org --send-keys YOUR_KEY_ID

方式二:网页上传

  1. 导出公钥文件:
shell 复制代码
gpg --export -a "Your Name" > public-key.asc
  1. 访问 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:git@github.com:cyclops-top/knit.git"
			developerConnection = "scm:git:ssh://git@github.com: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 

五、发布与验证

  1. 执行发布命令:
shell 复制代码
./gradlew publishAllPublicationsToMavenCentralRepository
  1. 登录Sonatype控制台检查制品
  2. 首次发布需人工审核(约2工作日)

注意事项

  1. DNS验证可能需要等待最长72小时
  2. GPG密钥需妥善保管,建议备份~/.gnupg目录
  3. 发布后24小时内需完成人工审核,否则制品会被删除
  4. 版本号必须遵循语义化版本规范(SemVer)
相关推荐
凯尔萨厮3 小时前
Maven(Windows下载安装)
笔记·maven
亓才孓9 小时前
[Maven]Maven基础
java·maven
我真会写代码1 天前
SSM(指南一)---Maven项目管理从入门到精通|高质量实操指南
java·spring·tomcat·maven·ssm
vx1_Biye_Design1 天前
基于Spring Boot+Vue的学生管理系统设计与实现-计算机毕业设计源码46223
java·vue.js·spring boot·spring·eclipse·tomcat·maven
qq_336313932 天前
javaweb-maven单元测试
java·开发语言·maven
计算机毕设指导63 天前
基于微信小程序的校园二手交易系统【源码文末联系】
java·spring boot·spring·微信小程序·小程序·tomcat·maven
多多*3 天前
2026年最新 测试开发工程师相关 Linux相关知识点
java·开发语言·javascript·算法·spring·java-ee·maven
lang201509283 天前
Tomcat Maven插件:部署与卸载的架构设计
java·tomcat·maven
lang201509283 天前
Tomcat Maven插件全解析:开发部署一体化
java·tomcat·maven
食指Shaye3 天前
idea突然出现找不到Maven配置的jar
maven·intellij-idea·jar