Maven: привязать выполнение плагина к выполнению другого плагина, а не к фазе жизненного цикла
Примечание относительно принятого ответа: я принял ответ из-за сильных косвенных доказательств. Тем не менее, это косвенные улики, так что возьмите их с солью.
как я могу запустить плагин, когда пользователь запускает цель плагина, а не фазу жизненного цикла? (Это было предложено раньше, но ответ состоял в том, чтобы использовать фазу жизненного цикла.)
пример: мне нужен release:branch
для вызова regex-plugin
в создайте ветвь с текущей версией в качестве ее имени,минус суффикс-SNAPSHOT. Это то, что у меня есть, что требует от разработчика активировать профиль и вызвать
2 ответов
нет, вы не можете привязать плагин к другому плагину. Только до фазы.
в Maven-внутренних терминах "Моджо" - это то, что работает. "Плагин" - это коллекция mojos, завернутая, чтобы вы могли ссылаться на них из POM. Mojos привязываются только к фазам.
С документация по разработке плагинов:
каждый Моджо, указанный внутри дескриптора плагина, должен предоставить следующее
...
этап ... Определяет фазу по умолчанию для привязки выполнения mojo, если пользователь явно не задает фазу в POM. Примечание: эта аннотация не будет автоматически выполнять mojo при добавлении объявления плагина в POM. Это просто позволяет пользователю опустить
<phase>
элемент из окружающего<execution>
элемент.
для дальнейшего подтверждения см. Источник MojoExecution (том JavaDoc для этого класса не полезно) и обратите внимание, что есть два возможных источника выполнения:
выполнение, которое происходит от прямого вызова цели из CLI
и
выполнение, которое происходит от цели, привязанной к фазе жизненного цикла
нет другого способа начать выполнение означает, что вам не повезло (за исключением чрезвычайных мер, таких как прокатка собственного плагина, который сочетает в себе эффекты двух плагинов, которые вы хотите связать, а затем использовать свой пользовательский плагин).
представленные до сих пор доказательства довольно косвенные. Я провел собственное исследование, так что лучше поделиться им здесь. Ниже приведены либо более одинаковые "это невозможно", либо строительные блоки для альтернатив.
фрукты, смешные, приключения:плагин МВН --- запустите указанную последовательность плагинов; конфигурация для запуска может быть изменена с помощью системного свойства; интеграция IDE касается
выполнение целей перед запуском плагина (StackOverflow) --- тот же вопрос ответил в контексте пользовательского Моджо
сделать Mojo запустить другие цели (StackOverflow) --- опять же, из контекста пользовательского Моджо
настройка выполнения Mojo по умолчанию --- Maven страница, описывающая, как Mojos run-более косвенные доказательства
запуск фаз перед выполнением цели (StackOverflow) --- окольными решение моей проблема, к сожалению, ответили отрицательно
интересно: руководство по разработке плагинов Ant --- апеллируя ко мне, потому что, хотя это требует написания пользовательского плагина, это все конфигурация Ant + Maven, нет кода для компиляции; предположительно, более низкий барьер для входа
создание параллельного жизненного цикла --- привлекательный подход, потому что я мог бы полностью контролировать содержимое жизненного цикла, где он будет использовать Глаголы Gitflow; неясно, как IDEs интегрирует это; кривая обучения и барьер принятия существуют