Gradle uploadArchives任务无法读取密钥

Jar*_*red 15 code-signing gnupg gradle

我创建了一个gradle项目,一切都很好,但是当我尝试上传到我的Maven存储库时,我得到以下Gradle错误:

FAILURE: Build failed with an exception.

* What went wrong:
Could not evaluate onlyIf predicate for task ':library:signArchives'.
> Unable to read secret key from file: C:\Users\ideal\pubring.gpg (it may not be a PGP secret key ring)
Run Code Online (Sandbox Code Playgroud)

我按照Sonatype的说明生成密钥,然后将其从生成的位置复制到上面列出的位置.我还发布了MIT密钥库的公钥.将gradle.properties在我的用户目录下的文件包含与钥匙串以下条目:

signing.keyId=MY_KEY_ID
signing.password=MY_KEY_PASSWORD
signing.secretKeyRingFile=C:\\Users\\ideal\\pubring.gpg
Run Code Online (Sandbox Code Playgroud)

这是在Windows平台上.我已经尝试搜索错误消息,但唯一出现的是相关插件的源文件.

Pet*_*ann 40

secring.gpg文件已在GPG 2.1中删除.

但是,GPG仍然可以创建这样的文件: gpg --export-secret-keys -o secring.gpg

专业提示:如果Gradle signing plugin抱怨你的密钥signing.keyId=MY_KEY_ID太长,你肯定会使用40个字符的指纹,但会被要求提供8个字符ID.那你有两个选择:

  1. 您可以通过设置选项将GPG配置为显示8个字符ID而不是指纹keyid-format.

    • 在CLI上明确定义此选项:( gpg --list-keys --keyid-format short谢谢tjheslin1!)
    • 通过选项文件隐式激活此选项(默认为"〜/ .gnupg/gpg.conf").
  2. 尝试40个字符指纹的最后8位数字.这是为懒惰的开发人员;-)

  • 这次真是万分感谢!挣扎了很长一段时间,但终于在你的帮助下取得了进展.我的问题是密钥长度.我需要运行`gpg2 --list-keys --keyid-format short`. (3认同)
  • 这应该是公认的答案。另一个是没用的。 (2认同)
  • Gradle 插件无法处理全长密钥,这是不可原谅的。雪上加霜的是,它使用了*最后* 8 个字符。捂脸。 (2认同)

Lor*_*tto 11

问题是你正在使用公钥,切换到密钥,通常名为"secring.gpg".所以在你的情况下它应该放入

C:\用户\理想\ secring.gpg