如何忽略 Apache Maven GPG 插件的错误

How to ignore errors of Apache Maven GPG Plugin

我正在使用 Apache Maven GPG 插件 maven-gpg-plugin 生成所需的签名以通过 OSSRH 在 Maven Central 中发布。我在 pom.xml 的插件定义如下,我的 OSSRH 凭据在 Maven conf/settings.xml,一切正常。但是当另一个开发人员尝试 mvn install 时,他失败了,因为他没有安装 GPG。我想避免安装 GPG 除了开发人员进行部署之外,可能通过在构建期间忽略 maven-gpg-plugin 错误或通过任何其他方式,这样我就不需要有两个 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>${gpg.keyname}</keyname>
          <passphraseServerId>${gpg.passphrase}</passphraseServerId>
        </configuration>
      </execution>
    </executions>
  </plugin>

您可以将配置文件添加到您的 pom 并在其中定义 maven-gpg-plugin 的执行:

<project>
  ...
  <profiles>
    <profile>
      <id>sign</id>
      <build>
        <plugins>
          <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>${gpg.keyname}</keyname>
                  <passphraseServerId>${gpg.passphrase}</passphraseServerId>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

只有当配置文件处于活动状态时,此插件才会被添加到构建过程中。您可以像这样调用 Maven 来激活配置文件:

mvn install -P sign

除了手动激活配置文件外,还可以根据环境变量或特定文件的存在等条件自动激活配置文件。您可以在 Maven introduction on profiles.

中找到更多相关信息

在您的情况下,如果找到特定于 GPG 的文件,一个选项可能是启用配置文件:

<profile>
  <id>sign</id>
  <activation>
    <file>
      <exists>${user.home}/.gnupg/secring.gpg</exists>
    </file>
  </activation>
  ...
</profile>

我没有测试上面的代码,您需要检查的实际文件可能会有所不同,具体取决于您使用的 GPG 版本和您的系统环境。