Как я могу выполнить несколько плагинов Maven в одной фазе и установить их соответствующий порядок выполнения? - PullRequest
17 голосов
/ 24 марта 2010

Я бы хотел разделить определенные фазы жизненного цикла maven на подфазы. Я хотел бы контролировать поток выполнения из одной подфазы в другую, что-то вроде муравьиной зависимости.

Например, я хотел бы использовать плагин NSIS, чтобы упаковать свой проект в установщик на этапе упаковки, ПОСЛЕ того, как мой проект был упакован в файл war. Я хотел бы сделать все это на этапе пакета.

Это возможно?

Спасибо

Ответы [ 2 ]

13 голосов
/ 24 марта 2010

Плагины, привязанные к одной и той же фазе , должны выполняться в том же порядке, в котором они перечислены в POM. При определенных обстоятельствах (например, если вы связываете один и тот же плагин с фазой дважды, например плагин antrun), это может не произойти, но это ошибка (см. MNG-2258 и связанную с этим проблему MNG -3719 ).

6 голосов
/ 25 марта 2010

У меня была такая же проблема. посмотрите Как выполнять упорядоченные задачи в сборке Maven2 . по какой-то причине различные цели, связанные с фазой, сохраняются в хэш-карте или другой неупорядоченной структуре, что делает порядок выполнения случайным. Мое решение состояло в том, чтобы распределить задачи по разным этапам, но я не думаю, что в вашем случае есть много смысла для этого (упаковка nsis не является тестом предварительной интеграции). Вы можете сделать одно из следующих действий:

1) испытайте удачу и посмотрите, выберет ли Maven правильный для вас порядок (вы, наверное, уже пробовали)

2) использовать автономный плагин - запустить цель вне жизненного цикла. что-то вроде: Пакет mvn org.codehaus.mojo: nsis-maven-plugin: 1.0: компилировать.

3) разделить их на модуль: иметь родительский pom, содержащий два подмодуля, один - ваш военный проект, а другой - для проекта nsis.

4) использовать пользовательский жизненный цикл путем изменения типа, в вашем случае вы можете использовать «exe». это делается с помощью пользовательского расширения плагина ( руководство по использованию расширения )

5) использовать jetspeed-mvn-maven-plugin . Я никогда не использовал его, но, похоже, он соответствует вашим потребностям.

надеюсь, это даст вам новые идеи.

Ронен

...