1. Обзор
В этом руководстве мы рассмотрим различные жизненные циклы сборки Maven и их этапы.
Мы также обсудим основную связь между целями и фазами.
2. Жизненный цикл сборки Maven
Сборка Maven следует определенному жизненному циклу развертывания и распространения целевого проекта.
Существует три встроенных жизненных цикла:
- по умолчанию: основной жизненный цикл, поскольку он отвечает за развертывание проекта.
- clean: очистить проект и удалить все файлы, сгенерированные предыдущей сборкой
- сайт: для создания документации сайта проекта
Каждый жизненный цикл состоит из последовательности фаз. Жизненный цикл сборки по умолчанию
состоит из 23 фаз, так как это основной жизненный цикл сборки.
С другой стороны, чистый
жизненный цикл состоит из 3 фаз, а жизненный цикл сайта
состоит из 4 фаз.
3. Фаза Знатока
Фаза Maven представляет собой этап жизненного цикла сборки Maven. Каждый этап отвечает за определенную задачу.
Вот некоторые из наиболее важных этапов жизненного цикла сборки по умолчанию :
validate:
проверьте, доступна ли вся информация, необходимая для сборкиcompile:
скомпилировать исходный кодtest-compile:
скомпилировать исходный код тестатест:
запустить модульные тестыpackage:
упаковать скомпилированный исходный код в распространяемый формат (jar, war, …)Integration-test:
обработайте и разверните пакет, если это необходимо для запуска интеграционных тестов .install:
установить пакет в локальный репозиторийразвернуть:
скопировать пакет в удаленный репозиторий
Полный список фаз каждого жизненного цикла см. в справочнике Maven .
Фазы выполняются в определенном порядке. Это означает, что если мы запустим конкретную фазу с помощью команды:
mvn <PHASE>
Он будет выполнять не только указанную фазу, но и все предыдущие фазы.
Например, если мы запустим фазу развертывания
, которая является последней фазой в жизненном цикле сборки по умолчанию
, она также выполнит все фазы перед фазой развертывания
, которая представляет собой весь жизненный цикл по умолчанию
:
mvn deploy
4. Цель Знатока
Каждая фаза представляет собой последовательность целей, и каждая цель отвечает за конкретную задачу.
Когда мы запускаем фазу, все цели, связанные с этой фазой, выполняются по порядку.
Вот некоторые из фаз и связанные с ними цели по умолчанию:
компилятор: компиляция
— целькомпиляции
из подключаемого модулякомпилятора
привязана к фазекомпиляции
компилятор: testCompile
привязан к фазетестовой компиляции
верный огонь: тест
привязан к фазетестирования
install:install
привязан к фазеустановки
jar:jar
иwar:war
привязаны к фазепакета
Мы можем перечислить все цели, привязанные к определенной фазе, и их плагины с помощью команды:
mvn help:describe -Dcmd=PHASENAME
Например, чтобы вывести список всех целей, связанных с фазой компиляции
, мы можем запустить:
mvn help:describe -Dcmd=compile
Тогда мы получим образец вывода:
compile' is a phase corresponding to this plugin:
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
Как упоминалось выше, это означает, что цель компиляции
из подключаемого модуля компилятора
привязана к фазе компиляции .
5. Плагин Maven
Плагин Maven — это группа целей ; однако эти цели не обязательно связаны с одной и той же фазой.
Например, вот простая конфигурация плагина Maven Failsafe, отвечающего за запуск интеграционных тестов:
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven.failsafe.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Как мы видим, у плагина Failsafe здесь настроены две основные цели:
Integration-test
: запустить интеграционные тестыVerify : проверить
, что все интеграционные тесты пройдены.
Мы можем использовать следующую команду, чтобы вывести список всех целей в конкретном плагине :
mvn <PLUGIN>:help
Например, чтобы вывести список всех целей в плагине Failsafe, мы можем запустить:
mvn failsafe:help
И вывод будет:
This plugin has 3 goals:
failsafe:help
Display help information on maven-failsafe-plugin.
Call mvn failsafe:help -Ddetail=true -Dgoal=<goal-name> to display parameter
details.
failsafe:integration-test
Run integration tests using Surefire.
failsafe:verify
Verify integration tests ran using Surefire.
Чтобы запустить конкретную цель, не выполняя всю ее фазу (и предыдущие фазы), мы можем использовать команду:
mvn <PLUGIN>:<GOAL>
Например, чтобы запустить цель интеграционного теста
из плагина Failsafe, нам нужно запустить:
mvn failsafe:integration-test
6. Создание проекта Maven
Чтобы построить проект Maven, нам нужно выполнить один из жизненных циклов, запустив одну из их фаз:
mvn deploy
Это выполнит весь жизненный цикл по умолчанию
. В качестве альтернативы мы можем остановиться на этапе установки
:
mvn install
Но обычно мы сначала очищаем проект, запуская чистый
жизненный цикл перед новой сборкой:
mvn clean install
Мы также можем запустить только конкретную цель плагина:
mvn compiler:compile
Обратите внимание, что если мы попытаемся собрать проект Maven без указания фазы или цели, мы получим ошибку:
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal
7. Заключение
В этой статье мы обсудили жизненные циклы сборки Maven, а также связь между фазами Maven и целями.