如何忽略 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 版本和您的系统环境。
我正在使用 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 版本和您的系统环境。