Перейти к основному содержимому

Цели и этапы Maven

· 4 мин. чтения

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 и целями.