 | Жизненный цикл Maven 2. Фазы, плагины и амулеты.
Maven выполняет большинство задач построения посредством работы плагинов. Движок Maven можно сравнить с дирижером действий плагинов.
Амулеты в плагинах
Плагины - это программные модули, написанные таким образом, чтобы четко вписываться в структуру Maven. В настоящее время, пользовательские плагины создаются на основе Java, Ant или Beanshell. Каждая задача внутри плагина называется амулетом. Иногда плагины рассматриваются как набор амулетов. В настоящем руководстве мы не будем рассматривать способы построения плагинов для Maven 2. См. раздел Ресурсы для получения дополнительной информации.
Maven 2 поставляется готовым для загрузки и работы с множеством часто используемых плагинов. Наиболее типичные задачи разработки не требуют использования дополнительных плагинов.
Перед тем как решить написать свой собственный плагин, сначала просмотрите несколько наиболее популярных сайтов со списками плагинов к Maven 2 (см. Ресурсы) для того, чтобы убедиться, что нужного вам плагина нет. На Рисунке 5 изображена таблица плагинов Maven (см. Ресурсы), в которой приведена информация по совместимости для множества доступных плагинов:
Рисунок 5. Таблица плагинов Maven
Привязка амулетов к фазам жизненных циклов
Амулет (задача построения) выполняется внутри плагина, когда движок Maven выполняет соответствующую фазу при построении жизненного цикла. Связь между амулетом плагина и фазой жизненного цикла называется привязкой. Разработчики плагина могут гибко связать одну или несколько фаз жизненного цикла с плагином.
Фазы жизненного цикла по умолчанию
Встроенная интерпретация фаз жизненнго цикла в Maven состоит из множества отдельных фаз. В Таблица 1 приведено краткое описание каждой фазы:
Таблица 1. Фазы жизненного цикла Maven 2 по умолчанию
| Фаза жизненного цикла | Описание |
|---|
| Проверка достоверности или валидация (validate) | Гарантирует полноценность текущей конфигурации и содержания POM. Включает в себя проверку файлов дерева pom.xml. | | Инициализация (initialize) | Возможность выполнить любую инициализацию до выполнения основных задач в цикле создания. | | Создание исходников (generate-sources) | Возможность для генераторов кода создать исходный код, исполняемый или компилируемый в последующих фазах. | | Обработка исходников (process-sources) | Предназначена для анализа, модификации и трансформации исходного кода. Здесь могут быть обработаны, как обычный код, так и сгенерированный. | | Создание ресурсов (generate-resources) | Возможность создания ресурсов, не заявленных в исходном коде. Обычно сюда включают файлы метаданных и конфигурации. | | Обработка ресурсов (process-resources) | Управляет обработкой ресурсов, незаявленных в исходном коде. В ходе выполнения этой фазы возможна модификация, трансформация и перераспределение ресурсов. | | Компиляция (compile) | Компилирует исходный код. Скомпилированные классы перемещают в дерево целевого каталога. | | Обработка классов (process-classes) | Выполняет любые шаги по трансформации и модернизации файла класса. В ходе выполнения этой фазы часто работают средства выработки байт-кода и инструментальные средства. | | Создание тестовых исходников (generate-test-sources) | Время для работы амулетов, генерирующих код тестовых модулей. | | Обработка тестовых исходников (process-test-sources) | Выполняет необходимую обработку тестового кода перед компиляцией. В ходе этой фазы исходный код может быть изменен, преобразован или скопирован. | | Создание тестовых ресурсов (generate-test-resources) | Позволяет создать ресурсы, относящиеся к тестированию (не входящие в исходный код). | | Обработка тестовых ресурсов (process-test-resources) | Обеспечивает обработку, трансформацию и перераспределение ресурсов, относящихся к тестированию. | | Компиляция теста (test-compile) | Компилирует исходный код модульных тестов. | | Тестирование (test) | Запуск скомпилированного теста и формирование результатов. | | Упаковка (package) | Упаковывает исполняемый двоичный код в дистрибутивный архив, например JAR или WAR. | | Прединтеграционный тест (pre-integration-test) | Подготовка к интеграционному тестированию. Интеграционное тестирование относится, в этом случае, к тестированию кода (контролируемой копии) в фактической среде развертывания. На этом шаге может произойти развертывание архива на сервере для последующего исполнения. | | Интеграционный тест (integration-test) | Выполнение фактических интеграционных тестов. | | Постинтеграционный тест (post-integration-test) | Делает откат после интеграционного теста. Это может повлечь за собой сброс или повторную инициализацию тестирующей среды. | | Подтверждение (verify) | Подтверждение правильности и целостности развертываемого архива. После этой фазы происходит установка архива. | | Установка (install) | Добавляет архив в локальный каталог Maven. За счет этого к нему обеспечивается доступ всем другим модулям, связанным с данным. | | Развертывание (deploy) | Добавляет архив в удаленные каталоги Maven. Это делает артефакт доступным для большой аудитории. |
Maven собрал более чем десятилетний опыт управления проектами с открытым исходным кодом. Едва ли вы найдете проект ПО, жизненый цикл которого не был бы описан Таблицей 1.
Когда вы запускаете движок Maven 2, он последовательно проходит все стадии Таблицы 1 и выполняет все амулеты, привязанные к определенной фазе. Каждый амулет при выполнении своего задания в порядке очереди использует такие возможности Maven 2, как полная поддержка POM, управление связями и доступ к информации о завершенности проекта.
Когда вы запускаете движок Maven 2, то можете указать фазу жизненного цикла как аргумент в командной строке. Движок будет последовательно работать во всех фазах, включая заданную вами фазу и до неё. Все амулеты во включенных вами фазах будут выполнены.
Итак, мы вкратце описали, как работает Maven 2. Вы ознакомитесь с его работой непосредственно в следующей главе. Имея предварительное представление о работе Maven, его моделях управления связями и его POM, вы увидите, что практическая работа с Maven 2 - это простое упражнение.
|  |