如何使用 gradle 和 gpg2 签名

How to sign with gradle and gpg2

gradle 签名插件需要 secring.gpg 密钥环文件,根据文档:https://docs.gradle.org/current/userguide/signing_plugin.html

但是自 gpg 2.1 版以来,secring.gpg 不再存在。 https://www.gnupg.org/faq/whats-new-in-2.1.html

是否可以在 gpg >= 2.1 下使用 gradle 的签名插件?

我刚遇到同样的问题,通过执行以下终端命令手动创建 secring.gpg 文件解决了这个问题:

gpg --keyring secring.gpg --export-secret-key XXXXXXXX > secring.gpg

您必须将 XXXXXXXX 替换为您要使用的密钥的 ID。您可以使用命令 gpg --list-key.

列出所有可用键

编辑:我忘了说,我正在使用 Linux。

我也遇到了用 gpg --export-secret-key 无法解决的问题,就像这样。

gpg: WARNING: nothing exported

实际上我的 gpg 版本是 1.4.xx(gpg --version)还有另一个:gpg2.

所以试试这个:

gpg2 --export-secret-key XXXXXXXX > secring.gpg

对于在 2017 年以后遇到此问题的人,从 Gradle 4.5 开始,完全支持使用 GnuPG 2(和 gpg-agent)。来自签名插件 documentation:

signing {
    useGpgCmd()
    sign configurations.archives
}

此外,必须定义(至少)signing.gnupg.keyName(最有可能在~/.gradle/gradle.properties)。

请注意定义的key(signing.gnupg.keyName)、key store(signing.gnupg.homeDir)、passphrase(signing.gnupg.passphrase)等属性与之前使用的不同Gradle 个版本(在 signing.gnupg.* 中,而不仅仅是 signing.*)。