«1. Обзор
В этом руководстве мы рассмотрим различные жизненные циклы сборки Maven и их фазы.
Мы также обсудим основную связь между целями и фазами.
2. Жизненный цикл сборки Maven
Сборка Maven следует определенному жизненному циклу для развертывания и распространения целевого проекта.
Существует три встроенных жизненных цикла:
-
по умолчанию: основной жизненный цикл, поскольку он отвечает за развертывание проекта clean: очистить проект и удалить все файлы, сгенерированные предыдущим сайтом сборки: создать документацию сайта проекта
Каждый жизненный цикл состоит из последовательности фаз. Жизненный цикл сборки по умолчанию состоит из 23 фаз, так как это основной жизненный цикл сборки.
С другой стороны, чистый жизненный цикл состоит из 3 фаз, а жизненный цикл сайта состоит из 4 фаз.
3. Фаза Maven
Фаза Maven представляет собой этап жизненного цикла сборки Maven. Каждый этап отвечает за определенную задачу.
Вот некоторые из наиболее важных этапов жизненного цикла сборки по умолчанию:
-
проверка: проверка наличия всей информации, необходимой для сборки компиляция: компиляция исходного кода проверка-компиляция: компиляция исходного кода теста проверка: запуск пакет модульных тестов: упаковать скомпилированный исходный код в распространяемый формат (jar, war, …) Integration-test: обработать и развернуть пакет, если это необходимо для запуска интеграционных тестов install: установить пакет в локальный репозиторий deploy: скопировать пакет в удаленный репозиторий
Полный список фаз каждого жизненного цикла см. в справочнике Maven.
Фазы выполняются в определенном порядке. Это означает, что если мы запустим определенную фазу с помощью команды:
mvn <PHASE>
Это запустит не только указанную фазу, но и все предыдущие фазы.
Например, если мы запустим фазу развертывания, которая является последней фазой в жизненном цикле сборки по умолчанию, будут выполнены все фазы перед фазой развертывания, которая является полным жизненным циклом по умолчанию:
mvn deploy
4. Цель Maven
Каждая фаза представляет собой последовательность целей, и каждая цель отвечает за определенную задачу.
Когда мы запускаем фазу — все цели, связанные с этой фазой, выполняются по порядку.
Вот некоторые фазы и связанные с ними цели по умолчанию:
-
compiler:compile — цель компиляции из подключаемого модуля компилятора привязана к фазе компиляции.compile:testCompile привязана к фазе тестовой компиляции. :test привязан к фазе тестирования 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 и целями.