首页 > 解决方案 > 使用 Gradle 5.4.1 签署 maven jar 导致无法设置未知属性“keyId”

问题描述

我正在尝试制作一个 Maven 签名的 jar,但如果我收到此异常

groovy.lang.MissingPropertyException: Could not set unknown property 'keyId' for object of type org.gradle.plugins.signing.SigningExtension

这是我的 build.gradle

plugins {
    id 'java-library'
    id 'maven-publish'
    id 'signing'
}

apply from: 'gradle.properties'

group 'com.foo'
version '1.0.0'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    // dependencies
}


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

task javadocJar(type: Jar) {
    archiveClassifier = 'javadoc'
    from javadoc.destinationDir
}



publishing {
    publications {
        myLibrary(MavenPublication) {
            from components.java

            artifact sourcesJar
            artifact javadocJar
        }
    }

    repositories {
        maven {
            name = 'myRepo'
            url = "file://${buildDir}/repo"
        }
    }
}

signing.keyId='MY_KEY'
signing.password='MY_SECRET'
signing.secretKeyRingFile=/NOT_TO_PUBLISH/secret-keys.gpg


signing {
    sign publishing.publications.myLibrary
}

如果我对签名部分发表评论,一切正常,我的出版物就会生成。

任何帮助将不胜感激

标签: javagradlebuild.gradle

解决方案


文档中没有引号:

signing.keyId=24875D73
signing.password=secret
signing.secretKeyRingFile=/Users/me/.gnupg/secring.gpg

我确定你有,但你试过不带引号吗?

上面的文档还包含另一种设置值的方法,你得到不同的响应吗?

    allprojects {
        ext."signing.keyId" = id
        ext."signing.secretKeyRingFile" = file
        ext."signing.password" = password
    }

此外,您是否使用最新版本的 Gradle(因此它正确支持该插件)?


推荐阅读