0

我正在使用 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 一个与插件-in 和另一个没有它。

  <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>
4

1 回答 1

3

您可以将配置文件添加到您的 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 介绍中找到更多信息。

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

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

我没有测试上面的代码,您需要检查的实际文件可能会因您使用的 GPG 版本和系统环境而异。

于 2017-07-30T20:38:14.637 回答