Примечание относительно принятого ответа: Я принял ответ из-за сильных косвенных доказательств. Тем не менее, это косвенное доказательство, поэтому возьмите его с солью.
Как я могу запустить плагин, когда пользователь запускает цель плагина, а не фазу жизненного цикла? (Перед этим вопросом был задан вопрос, но ответ заключался в использовании этапа жизненного цикла.)
Пример: мне нужно release:branch
вызвать regex-plugin
для генерации ветки с текущей версией в качестве ее имени, минус суффикс -SNAPSHOT. Это то, что у меня есть, что требует от разработчика активации профиля и вызова фазы verify
. Мне нужно, чтобы разработчик просто вызывал release:branch
, что в свою очередь должно приводить к запуску regex-plugin
. В битве с Gitflow.
<profile>
<id>Release Branch</id>
<build>
<plugins>
<!-- On validate, compute the current version without -SNAPSHOT. -->
<!-- Put the result in a property. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<value>${project.version}</value>
<regex>^(.*)-SNAPSHOT$</regex>
<replacement>$1</replacement>
<name>project.unqualifiedVersion</name>
</configuration>
</execution>
</executions>
</plugin>
<!-- Also on validate, run the branch plugin, and use -->
<!-- the non-SNAPSHOT version thus computed in the branch name. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>branch</goal>
</goals>
<configuration>
<branchName>release/${project.unqualifiedVersion}</branchName>
<updateWorkingCopyVersions>true</updateWorkingCopyVersions>
<updateBranchVersions>false</updateBranchVersions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Цель состоит в том, чтобы release:branch
переместить текущую версию моментального снимка (скажем, 1.0.5-SNAPSHOT
) в новую ветку, которая должна быть названа в честь версии, но без избыточного суффикса -SNAPSHOT
(1.0.5
). Текущая ветка должна затем взять новую версию моментального снимка (1.1.0-SNAPSHOT
, not 1.0.6-SNAPSHOT
, потому что мы хотим, чтобы release 1.0.x
имело место для исправлений, поэтому резервируем ее для ветки) (у меня нет автоматической вычисление следующей версии снимка еще не выяснено, поэтому, если вы запустили конфигурацию Maven выше с помощью validate
, вам нужно будет ввести ее в командной строке).