Как игнорировать ошибки плагина Apache Maven GPG

Я использую Apache Maven GPG Plugin maven-gpg-plugin для генерации необходимых подписей для публикации в Maven Central через OSSRH. Мое определение подключаемого модуля в 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>

1 ответ

Решение

Вы можете добавить профиль в свой 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 и вашей системной среды.

Другие вопросы по тегам