【问题标题】:Gradle uploadArchives task unable to read secret keyGradle uploadArchives 任务无法读取密钥
【发布时间】:2015-01-14 04:55:42
【问题描述】:

我创建了一个 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 平台上。我已经尝试搜索错误消息,但唯一出现的是相关插件的源文件。

【问题讨论】:

    标签: gradle code-signing gnupg


    【解决方案1】:

    secring.gpg 文件为 removed in GPG 2.1

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

    专业提示:如果 Gradle 的 signing plugin 抱怨您在 signing.keyId=MY_KEY_ID 中的密钥太长,那么您肯定使用的是 40 个字符的指纹,但系统要求您提供 8 个字符的 ID。那么你有三个选择:

    1. 您可以通过设置keyid-format 选项,configure GPG 显示 8 字符 ID 而不是指纹。

      • a) 在 CLI 上明确定义此选项:gpg --list-keys --keyid-format short(感谢 tjheslin1!)
      • b) 或通过options file 隐式激活此选项(默认位置为~/.gnupg/gpg.conf)。
    2. 尝试 40 个字符指纹的最后 8 位数字。这是给懒惰的开发者的 ;-)

    【讨论】:

    • 谢谢你!挣扎了半天,终于在你的帮助下取得了进展。我的问题是密钥长度。运行gpg2 --list-keys --keyid-format short 是我所需要的。
    • 谢谢@tjheslin1!我刚刚添加了您的输入 :-)
    • 这应该是公认的答案。另一个没用。
    • Gradle 插件无法处理全长密钥是不可原谅的。为了雪上加霜,它使用了 last 8 个字符。掌心。
    【解决方案2】:

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

    C:\Users\ideal\secring.gpg

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2020-01-15
        • 1970-01-01
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多