You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle配置后Maven Central仍不识别构件签名问题求助

解决Maven Central不识别Gradle签名构件的问题

Gradle配置排查

1. 移除冲突的签名配置

你同时使用了useGpgCmd()和useInMemoryPgpKeys(),这两个方法互斥:

  • useGpgCmd()依赖本地系统的GPG命令行工具签名
  • useInMemoryPgpKeys()直接使用内存中提供的密钥对

保留其中一个即可,比如使用内存密钥的正确配置:

signing {
    useInMemoryPgpKeys(signingKey, signingPassword)
}

2. 确认签名任务触发逻辑

检查isPublishingToMavenCentral的判断是否准确:

  • 确认mavenCentralRepoName变量值与Maven Central仓库的name匹配(默认Maven Central仓库name为"MavenCentral")
  • 构建时添加--info参数,查看Sign任务是否执行:
    ./gradlew publish --info | grep "Sign"
    
    若无相关日志输出,说明判断逻辑未触发签名,需调整条件。

3. 验证签名文件生成

本地执行发布到mavenLocal,检查构件目录下是否生成.asc签名文件:

./gradlew publishToMavenLocal

在~/.m2/repository/[你的构件路径]下,确认存在与jar、pom文件对应的.asc文件(如my-artifact-1.0.0.jar.asc)。若没有,说明签名未生成,需排查配置问题。

签名有效性验证

用GPG命令验证本地构件的签名合法性:

gpg --verify my-artifact-1.0.0.jar.asc my-artifact-1.0.0.jar

若验证失败,说明signingKey或signingPassword配置错误,需确认密钥和密码的正确性。

密钥同步检查

Maven Central可能需要密钥同步到多个主流服务器,仅上传到Ubuntu服务器可能存在同步延迟或覆盖不全的问题:

  1. 上传密钥到更多服务器:
    gpg --keyserver pool.sks-keyservers.net --send-keys MY-KEY
    gpg --keyserver keys.openpgp.org --send-keys MY-KEY
    
  2. 等待密钥同步(通常需几分钟到几小时),再验证是否能从其他服务器获取:
    gpg --keyserver keys.openpgp.org --recv-keys MY-KEY
    

额外验证步骤

  • 确认POM配置包含签名构件:Gradle的signing插件默认会自动将签名文件添加到publication中,但如果自定义了publication配置,需确保未移除签名构件。
  • 查看Maven Central的具体报错:如果有明确的签名验证错误(如密钥未找到、签名不匹配),根据错误信息针对性排查。

内容的提问来源于stack exchange,提问作者Roäc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:03:22