Appyling Gradle签名插件,无需GPG密钥环

时间:2018-02-17 18:27:40

标签: gradle sign gradle-plugin maven-central

我按照http://central.sonatype.org/pages/gradle.html的说明使用Gradle将工件上传到Maven Central Repository。说明工作。示例显示在https://github.com/plume-lib/options/blob/master/build.gradlehttps://github.com/plume-lib/bcel-util/blob/master/build.gradle

我的问题是它会导致其他开发人员无法使用的构建文件。

Gradle签名插件(https://docs.gradle.org/current/userguide/signing_plugin.html)需要gradle.properties个文件signing.keyIdsigning.passwordsigning.secretKeyRingFile,其中后者指向有效的GPG钥匙圈。如果文件不存在或无效,插件会终止构建并显示错误。

但只有在将工件上传到Maven Central时才需要签名。 我希望任何用户都能够运行gradle构建文件(除了实际上传到Maven Central),即使他们没有GPG密钥环。

我怎样才能做到这一点?

以下是我尝试过的一些事情:

  1. 将gradle文件拆分为多个部分。 (这是链接示例中显示的内容。)这需要进行两处更改。

    • 将主构建文件更改为构建脚本。 (它仍然可以从命令行调用)。关于这一点的一个重要的事情是,只有一个gradle构建文件可以包含plugins { ... }块,并且引用plugins { ... }块之外的插件是冗长和丑陋的,如(例如){{3}的底部}或

    • 创建另一个仅用于签名的构建文件,使用apply from:包含主文件。

    问题:如果没有丑陋的buildscript块,有没有办法做到这一点?

  2. 将虚拟密钥环提交到存储库,在本地gradle.properties中引用它,用户~/gradle.properties可以为任何想要上传到Maven Central的用户覆盖它。问题是使用本地路径名会产生一个gradle警告。 问题:没有gradle警告,有没有办法做到这一点?

  3. 使用条件签名(https://plugins.gradle.org/plugin/com.github.sherter.google-java-format)。在我的实验中,这没有用。即使在没有签名工件的gradle执行中,签名插件仍然需要GPG密钥环存在。 问题:是否可以使用条件签名来避免使用GPG密钥环?

  4. 问题:有没有比上述可能性更好的方法来实现我的目标?

1 个答案:

答案 0 :(得分:0)

文档中有"Conditional Signing"部分,这正是您需要的部分。 您甚至可以使该条件检查所需的属性确实可用于构建。