Как лучше подписывать артефакты maven только на производстве? - PullRequest
2 голосов
/ 23 июня 2019

Когда мне и моей команде нужно отправить новую версию артефакта Maven в центр, мы используем следующую процедуру:

mvn release:clean
mvn release:prepare
mvn release:perform

И все отлично работает.

Конечно, pom.xml содержит ссылку на плагин maven gpg для запечатывания банок:

 ...
<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>
      </execution>
    </executions>
  </plugin>
   ....
</plugins>
</build>
....

Или mvn release:perform не удалось:

Но во время разработки у некоторых из нас нет / не может быть установлена ​​программа gpg.exe или ключ подписи (только главный разработчик имеет тот, который запечатывает финальные банки).

Таким образом, если мы локально выполняем команды mvn clean install или другой тип, процедура завершается ошибкой, и мы не можем иметь локальный измененный файл jar в папке .m2 во время разработки.

Как лучше всего делать подпись пакета che только при выполнении команды mvn release:perform?

1 Ответ

0 голосов
/ 23 июня 2019

Отпустите и подпишите артефакт, уже решенный.Вы можете использовать профиль, который будет активировать плагин знака.Более подробную информацию и историю можно найти здесь https://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/.

<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>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
  </profile>
</profiles>
...