无法从密钥环文件 secring.gpg 中检索密钥,因为它不存在

Posted

技术标签:

【中文标题】无法从密钥环文件 secring.gpg 中检索密钥,因为它不存在【英文标题】:Unable to retrieve secret key from key ring file secring.gpg as it does not exist 【发布时间】:2019-10-10 22:25:00 【问题描述】:

我想使用maven-publishsigning 将我的项目发布到maven。问题是当我尝试发布时:gradle publish 我收到此错误:

 * What went wrong: Execution failed for task ':project:signMavenJavaPublication'.
    > Unable to retrieve secret key from key ring file '/Users/nick/.gnupg/secring.gpg ' as it does not exist

在发布之前,我生成如下密钥:

    gpg --gen-key gpg --export-secret-keys > ~/.gnupg/secring.gpg

然后我改变我的~/.gradle.gradle.properties

signing.keyId=ID
signing.password=PASS
signing.secretKeyRingFile=/Users/nick/.gnupg/secring.gpg 

我的 gradle.build 如下所示:

subprojects 
    if (it.name != 'exclusion') 
        apply plugin: 'java-library'
        apply plugin: 'maven-publish'
        apply plugin: 'signing'
    

    dependencies 
...
    

    test 
        useJUnitPlatform()

        testLogging 
            events "passed", "skipped", "failed"
        

        testClassesDirs = sourceSets.test.output
        classpath = sourceSets.test.runtimeClasspath
    

    task sourcesJar(type: Jar) 
        from sourceSets.main.allJava
        archiveClassifier = 'sources'
    

    task javadocJar(type: Jar) 
        from javadoc
        archiveClassifier = 'javadoc'
    

    javadoc 
        if(JavaVersion.current().isJava9Compatible()) 
            options.addBooleanOption('html5', true)
        
    

    if (it.name != 'exclusion') 
        publishing 
            publications 
                mavenJava(MavenPublication) 
                    artifactId = it.name
                    from components.java
                    artifact sourcesJar
                    artifact javadocJar
                    versionMapping 
                        usage('java-api') 
                            fromResolutionOf('runtimeClasspath')
                        
                        usage('java-runtime') 
                            fromResolutionResult()
                        
                    
                    pom 
...
                        licenses 
...
                        
                        developers 
...
                        
                        scm 
...
                        
                    
                
            

            repositories 
                maven 
...
                
            
        

        if (project.hasProperty("signing.keyId")) 
            signing 
                sign publishing.publications.mavenJava
            
        
    

我做错了什么?

【问题讨论】:

【参考方案1】:

我通过生成不是secring.gpg 而是secring.kbx 解决了这个问题:

gpg --export-secret-keys -o ~/secring.kbx

我不确定这是不是正确的方法,但至少 gradle 插件终于可以工作了。

【讨论】:

以上是关于无法从密钥环文件 secring.gpg 中检索密钥,因为它不存在的主要内容,如果未能解决你的问题,请参考以下文章

gpg: no default secret key: 私钥不可用

无法从 App.Config 中检索密钥

Facebook iOS 上传视频“无法从访问令牌中检索会话密钥。”

Javascript:从 sessionStorage 中检索所有密钥?

Gradle signArchives 无法读取密钥

swift 从plist文件中检索密钥