选择 maven-gpg-plugin 中使用的 GnuPG 密钥

Posted

技术标签:

【中文标题】选择 maven-gpg-plugin 中使用的 GnuPG 密钥【英文标题】:Select the GnuPG key used in maven-gpg-plugin 【发布时间】:2017-12-12 15:26:59 【问题描述】:

我已经看到How to select the GnuPG key that the maven-gpg-plugin uses to sign artifacts? 和更多问题,但我仍然无法使这个 maven 插件工作。

我已经使用 gpg 创建了 2 个密钥,现在我可以通过以下操作看到它们:

$ gpg --list-secret-keys --keyid-format LONG
-----------------------------
sec   rsa2048/835CAF6D1B0569EB 2017-12-12 [SC]
uid                 [ultimate] User 1 <email1@gmail.com>
ssb   rsa2048/7604C74FE62682EF 2017-12-12 [E]

sec   rsa2048/1330DF9E7C6D864E 2017-12-12 [SC]
uid                 [ultimate] User 2 <email2@gmail.com>
ssb   rsa2048/09982A57EC4B5F18 2017-12-12 [E]

我的 pom.xml 配置如下:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-gpg-plugin</artifactId>
  <version>1.6</version>
  <executions>
    <execution>
      <id>sign-artifacts</id>
      <phase>verify</phase>
      <goals>
        <goal>sign</goal>
      </goals>
      <configuration>
        <keyname>1330DF9E7C6D864E</keyname>
        <passphrase>supersecurepassword</passphrase>
      </configuration>
    </execution>
  </executions>
</plugin>

但是当我执行“mvn package gpg:sign”时,它总是使用密钥 835CAF6D1B0569EB 站在https://maven.apache.org/plugins/maven-gpg-plugin/sign-mojo.html,密钥名应该发送给 gpg -u/--local-user,但它似乎不起作用。 我也试过使用“gpgArguments”和“--default-key”,我试过“0x1330DF9E7C6D864E”和“0x1330DF9E7C6D864E!” (对文件的立场应该强制关键)。 它有什么问题?

谢谢

【问题讨论】:

> 但是当我执行“mvn package gpg:sign”时,它总是使用密钥 835CAF6D1B0569EB clean 添加到 maven 调用中。像这样:mvn clean package gpg:sign 【参考方案1】:

添加gpg前缀。

<gpg.keyname>1330DF9E7C6D864E</gpg.keyname>
<gpg.passphrase>supersecurepassword</gpg.passphrase>

【讨论】:

gpg 前缀只有在通过属性传递配置时才需要。如果插件是直接配置的,那么&lt;keyname&gt; 是正确的(就像有问题的代码一样)。【参考方案2】:

您是否尝试仅使用签名密钥的最后 8 个字符 (7C6D864E)?并且还试图追加到开头0x (0x7C6D864E)?

另外,请尝试检查签名密钥

gpg --list-signatures --keyid-format 0xshort

gpg --list-signatures --keyid-format 0xlong

gpg --list-signatures

gpg --list-signatures --keyid-format short

【讨论】:

以上是关于选择 maven-gpg-plugin 中使用的 GnuPG 密钥的主要内容,如果未能解决你的问题,请参考以下文章

在 Jenkins 下运行时,maven-gpg-plugin 失败并显示“设备的 ioctl 不合适”

Maven install 报错: Failed to execute goalorg.apache.maven.plugins:maven-gpg-plugin:1.4:sign (sign-art

maven-gpg-plugin:1.2:sign (sign-artifacts) on project jdbc-pool: Cannot obtain passphrase in batch m

maven 发布到中央仓库 gpg 证书

在 Maven 发布期间跳过 GPG 密钥

使用 Chosen 插件更改选择中的选择