Gradle uploadArchives任务无法读取密钥

时间:2015-01-14 04:55:43

标签: gradle code-signing gnupg

我创建了一个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)

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

signing.keyId=MY_KEY_ID
signing.password=MY_KEY_PASSWORD
signing.secretKeyRingFile=C:\\Users\\ideal\\pubring.gpg

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

3 个答案:

答案 0 :(得分:34)

Linux crti-test-vps 4.4.0-28-generic #47~14.04.1-Ubuntu SMP Fri Jun 24 16:30:35 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux文件已为removed in GPG 2.1

但是,GPG仍然可以创建这样的文件:secring.gpg

专家提示:如果Gradle的gpg --export-secret-keys -o secring.gpg抱怨signing plugin中的密钥太长,您肯定会使用40个字符的指纹,但被要求提供8个字符ID。你有两个选择:

  1. 您可以configure GPG通过设置signing.keyId=MY_KEY_ID选项来显示8个字符ID而不是指纹。

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

答案 1 :(得分:11)

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

  

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

答案 2 :(得分:0)

在GPG 2.1和更高版本中可能不需要“ secring.gpg”文件,并且可以使用以下命令生成该文件:       “ gpg --export-secret-keys -o \ dir \ secring.gpg”