如何将KMM库发布到LocalMaven?Sonatype仓库未创建问题排查
我开发了一个KMM库,计划发布到Sonatype供原生Android应用调用,按照官方教程操作后,执行命令./gradlew publishAllPublicationsToSonatypeRepository显示构建成功,但Sonatype后台始终没有创建对应的Staging仓库。
我的配置信息
local.properties中的配置:
signing.keyId=我的密钥ID后8位 signing.password=我的密钥密码 ossrhUsername=Sonatype用户名 ossrhPassword=Sonatype密码 signing.secretKeyRingFile=secret-key.gpg
为解决编译时的JVM Target错误,我在convention-plugin的build.gradle中添加了以下代码:
kotlin { jvmToolchain(17) }
之前遇到的编译错误:
Execution failed for task ':convention-plugins:compileKotlin'. > Error while evaluating property 'compilerOptions.jvmTarget' of task ':convention-plugins:compileKotlin'. > Failed to calculate the value of property 'jvmTarget'. > Unknown Kotlin JVM target: 20
排查方向与解决建议
验证Gradle发布配置完整性
确认convention-plugin中的发布配置是否正确关联了Sonatype仓库:检查publishing.repositories块里是否配置了Sonatype的Staging仓库地址,是否正确从local.properties读取ossrhUsername和ossrhPassword进行认证,有没有遗漏mavenCentral()仓库声明。检查签名环节是否静默失败
构建成功不代表签名流程正常,执行./gradlew publishAllPublicationsToSonatypeRepository --info查看详细日志,重点关注签名相关的输出:- 确认
signing.secretKeyRingFile的文件路径是否正确,当前用户是否有读取权限 - 检查密钥ID、密码是否与本地GPG密钥匹配,有没有密钥过期或未导入的情况
- 确认
确认Sonatype账号状态
如果是首次发布,检查账号是否完成了域名验证流程,Sonatype是否已经审核通过你的发布权限。未通过审核的账号无法创建Staging仓库。确保发布任务真正执行
有时候Gradle会因为代码无变更跳过发布任务,先执行./gradlew clean清空构建缓存,再重新执行发布命令。同时查看日志里的任务执行记录,确认publishAllPublicationsToSonatypeRepository的所有子任务都已完成。排查JVM版本兼容问题
虽然jvmToolchain(17)解决了编译错误,但要保证项目全局JVM版本一致:检查根目录gradle.properties是否设置了org.gradle.java.home指向JDK17,避免版本不匹配导致的隐性发布失败。
内容的提问来源于stack exchange,提问作者Abhishek Agarwal

