禁止基于 Maven 的持续集成构建的 GPG 签名 (Travis CI)

我正在使用Travis-CI为我正在处理的一些Java开源项目提供持续集成构建。

通常,这可以顺利工作,但是当POM指定GPG签名时,我遇到了问题,例如

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-gpg-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <id>sign-artifacts</id>
      <phase>verify</phase>
      <goals>
        <goal>sign</goal>
      </goals>
    </execution>
  </executions>
</plugin>

这会导致 Travis 构建失败 - 显然是因为它在运行时没有可用的密码短语。有关示例,请参阅此版本mvn install

将 Maven 和/或 Travis 配置为跳过 CI 测试构建的 GPG 签名,但在执行正确的发布构建时仍执行 GPG 签名的最佳方法是什么?


答案 1

通过将以下行添加到文件中来禁用 GPG 签名:.travis.yml

install: mvn install -DskipTests -Dgpg.skip

示例:https://github.com/stefanbirkner/system-rules/blob/master/.travis.yml


答案 2

您需要创建一个配置文件,并确保仅在执行发布构建时才运行该配置文件。

删除当前插件,并将其添加到如下配置文件中:

<profiles>
    <profile>
        <id>release-sign-artifacts</id>
        <activation>
            <property>
                <name>performRelease</name>
                <value>true</value>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>1.4</version>
                    <executions>
                        <execution>
                            <id>sign-artifacts</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

然后,当您实际需要执行释放时,将该属性添加到 mvn 命令中:

mvn -DperformRelease=true ...

推荐