Gradle uploadArchives 任务无法读取密钥
Gradle uploadArchives task unable to read secret key
我创建了一个 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 生成了密钥,然后将其从生成的位置复制到上面列出的位置。我还将 public 密钥发布到 MIT 密钥存储库。我的用户目录中的 gradle.properties
文件包含以下与钥匙串相关的条目:
signing.keyId=MY_KEY_ID
signing.password=MY_KEY_PASSWORD
signing.secretKeyRingFile=C:\Users\ideal\pubring.gpg
这是在 Windows 平台上。我尝试搜索错误消息,但唯一出现的是相关插件的源文件。
问题是您正在使用 public 密钥,切换到通常名为 "secring.gpg" 的密钥。
所以在你的情况下它应该放在
C:\Users\ideal\secring.gpg
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。那么你有三个选择:
您可以 configure GPG 通过设置 keyid-format
选项来显示 8 个字符 ID 而不是指纹。
- a) 在 CLI 上显式定义此选项:
gpg --list-keys --keyid-format short
(感谢 tjheslin1!)
- b) 或者通过 options file 隐式激活此选项(默认位置是
~/.gnupg/gpg.conf
)。
试试你 40 个字符指纹的最后 8 位数字。这是为懒惰的开发人员准备的 ;-)
GPG 2.1及以后版本可能不需要"secring.gpg"文件,可以用命令生成:
"gpg --export-secret-keys -o \dir\secring.gpg"
我创建了一个 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 生成了密钥,然后将其从生成的位置复制到上面列出的位置。我还将 public 密钥发布到 MIT 密钥存储库。我的用户目录中的 gradle.properties
文件包含以下与钥匙串相关的条目:
signing.keyId=MY_KEY_ID
signing.password=MY_KEY_PASSWORD
signing.secretKeyRingFile=C:\Users\ideal\pubring.gpg
这是在 Windows 平台上。我尝试搜索错误消息,但唯一出现的是相关插件的源文件。
问题是您正在使用 public 密钥,切换到通常名为 "secring.gpg" 的密钥。 所以在你的情况下它应该放在
C:\Users\ideal\secring.gpg
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。那么你有三个选择:
您可以 configure GPG 通过设置
keyid-format
选项来显示 8 个字符 ID 而不是指纹。- a) 在 CLI 上显式定义此选项:
gpg --list-keys --keyid-format short
(感谢 tjheslin1!) - b) 或者通过 options file 隐式激活此选项(默认位置是
~/.gnupg/gpg.conf
)。
- a) 在 CLI 上显式定义此选项:
试试你 40 个字符指纹的最后 8 位数字。这是为懒惰的开发人员准备的 ;-)
GPG 2.1及以后版本可能不需要"secring.gpg"文件,可以用命令生成: "gpg --export-secret-keys -o \dir\secring.gpg"