Справка по жизненному циклу Maven2 - PullRequest
3 голосов
/ 27 ноября 2008

Я создал собственный плагин Maven2, используя Ant. Я хотел бы вызвать другой подключаемый модуль maven, в частности подключаемый модуль Cargo Maven2, сразу после успешного завершения пользовательского подключаемого модуля Ant. Однако я не хочу присоединять плагин Cargo к другой цели или этапу. Есть ли способ заставить их работать последовательно без необходимости написания пакетного скрипта? Нужно ли, чтобы плагин Custom Ant вызывал плагин Cargo?

Ответы [ 3 ]

2 голосов
/ 20 января 2009

Смотрите это обсуждение: Re: вызывать плагин в другом плагине? По словам разработчиков Maven, плагины не должны работать.

Впрочем, есть такой интересный комментарий:

Плагины / Мохо должны быть тонкими обертками вокруг библиотеки. Вы бы хотели использовать библиотеку напрямую.

Cargo - это не только плагин Maven, он также имеет Java API и задачу Ant . Так что вы могли бы, вероятно:

  • вызовите задачу Cargo Ant из вашего Ant mojo (думаю, вам просто понадобятся Cargo JAR в пути к классу вашего плагина);

  • перепишите ваш Ant Mojo в Java и вызовите API-интерфейс Cargo (вам нужно взглянуть на источники плагина Cargo).

0 голосов
/ 23 января 2009

Вас могут заинтересовать два следующих maven

Плагин GMaven позволяет писать плагины maven, используя groovy. Это дает вам полный доступ к ant с помощью Ant Builder , это очень простой способ написания ant-скриптов на Groovy. Тогда в этом Groovy mojo вы можете вызвать любое maven mojo, используя Mojo Executor.

Я использовал их в нескольких пользовательских плагинах maven, и я не нашел более простого способа написания и объединения моджо.

0 голосов
/ 20 января 2009

Сценарий Ant, который выполняет maven-ant-plugin, на самом деле не знает о Maven как таковом; Этот плагин предназначен для обратной совместимости с пользовательскими задачами Ant. Я не могу придумать чистый способ делать то, что вы хотите, хотя может быть какой-то взлом, который позволяет вам это сделать.

Также должна быть возможность выполнить второй экземпляр Maven изнутри Ant, который выполняет исключительно цель Cargo, но в этом случае вы можете столкнуться с проблемами с заблокированными файлами и т.п. Способ сделать это - просто использовать тег в вашем скрипте Ant и вызвать исполняемый файл mvn с соответствующими целями в качестве аргументов.

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

...