Справка по жизненному циклу Maven2
-
11-07-2019 - |
Вопрос
Я создал пользовательский плагин Maven2 с помощью Ant.Я хотел бы вызвать другой подключаемый модуль maven, в частности плагин Cargo Maven2, сразу после успешного завершения пользовательского плагина Ant.Однако я не хочу привязывать плагин Cargo к другой цели или этапу.Есть ли способ заставить их запускаться последовательно без необходимости написания пакетного скрипта?Есть ли возможность, чтобы пользовательский подключаемый модуль Ant вызывал подключаемый модуль Cargo?
Решение
Смотрите это обсуждение: Ре:вызывающий плагин в другом плагине? По словам разработчиков Maven, плагины должны работать не так.
Однако есть один интересный комментарий:
Плагины / Mojos должны представлять собой тонкую оболочку вокруг библиотеки.Вы бы хотели использовать библиотеку напрямую.
Cargo - это не только плагин Maven, он также имеет Java API и Муравьиная задача.Так что вы, вероятно, могли бы:
вызовите задачу Cargo Ant из вашего Ant mojo (я думаю, вам просто понадобятся банки Cargo в пути к классу вашего плагина);
перепишите свой Ant mojo на Java и вызовите Cargo API (вы бы хотели посмотреть исходные тексты плагина Cargo).
Другие советы
Ant-скрипт, который выполняет maven-ant-plugin, на самом деле не знает о Maven как таковом; Этот плагин предназначен для обратной совместимости с пользовательскими задачами Ant. Я не могу придумать чистый способ делать то, что вы хотите, хотя может быть какой-то взлом, который позволяет вам это сделать.
Также должна быть возможность выполнить второй экземпляр Maven изнутри Ant, который выполняет исключительно цель Cargo, но в этом случае вы можете столкнуться с проблемами с заблокированными файлами и т.п. Чтобы сделать это, просто используйте тег в вашем скрипте Ant и вызовите " mvn " исполняемый файл с соответствующими целями в качестве аргументов.
Самый простой способ - просто привязать цель Cargo к этапу сборки и запустить его после завершения Ant. Я не вижу никаких недостатков в этом подходе - вы на самом деле не указали никаких конкретных причин, по которым вы хотите этого избежать.
Возможно, вас заинтересуют два следующих maven
Плагин GMaven позволяет вам писать плагины maven с помощью groovy.Это дает вам полный доступ к ant с помощью Муравьиный Строитель, это очень простой способ написания ant-скриптов на Groovy.Затем в этом Groovy mojo вы могли бы вызвать любой maven mojo, используя Mojo Executor.
Я использовал их в нескольких пользовательских плагинах maven, и я не нашел более простого способа написания и объединения mojos.