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 интегрирует это; кривая обучения и барьер принятия существуют