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