Maven Цели и Этапы

1. Обзор

В этом уроке мы рассмотрим различные жизненные циклы сборки Maven и их фазы.

Мы также обсудим основные отношения между целями и этапами.

2. Maven Build Lifecycle

Сборка Maven следует определенному жизненному циклу для развертывания и распространения целевого проекта.

Есть три встроенных жизненных цикла:

  • по умолчанию: основной жизненный цикл, так как он отвечает за проект

развертывание ** clean: очистить проект и удалить все файлы, созданные

предыдущая сборка ** site: создать документацию сайта проекта

  • Каждый жизненный цикл состоит из последовательности фаз. ** Жизненный цикл default сборки состоит из 23 фаз, так как это основной жизненный цикл сборки.

С другой стороны, жизненный цикл clean состоит из 3 фаз, а жизненный цикл site состоит из 4 фаз.

3. Maven Phase

  • Фаза Maven представляет собой этап жизненного цикла сборки ** Maven. Каждый этап отвечает за конкретную задачу.

Вот некоторые из наиболее важных этапов в жизненном цикле сборки default :

  • validate: проверить, вся ли информация, необходимая для сборки

имеется в наличии ** compile: компилировать исходный код

  • test-compile: скомпилируйте исходный код теста

  • test: запустить юнит-тесты

  • package: упаковывает скомпилированный исходный код в распространяемый формат

(баночка, война, …​) ** integration-test: обработать и развернуть пакет, если необходимо запустить

интеграционные тесты ** install: установить пакет в локальный репозиторий

  • deploy: скопировать пакет в удаленный репозиторий

Полный список фаз каждого жизненного цикла можно найти в Maven Reference .

Этапы выполняются в определенном порядке. Это означает, что если мы запустим определенный этап с помощью команды:

mvn <PHASE>
  • Это не только выполнит указанную фазу, но и все предыдущие фазы. **

Например, если мы запустим фазу deploy , которая является последней фазой в жизненном цикле сборки default , которая также выполнит все фазы до фазы deploy , то есть всего жизненного цикла default :

mvn deploy

4. Maven Goal

  • Каждый этап представляет собой последовательность целей, и каждая цель отвечает за конкретную задачу. **

Когда мы запускаем фазу - все цели, связанные с этой фазой, выполняются по порядку.

Вот некоторые из фаз и целей по умолчанию, связанных с ними:

  • compiler: compile - цель compile из плагина compiler

привязан к фазе compile ** compiler: testCompile связан с фазой test-compile

  • surefire: test привязан к test фазе

  • install: install связан с фазой install

  • jar: jar и war: war связан с фазой package

Мы можем перечислить все цели, связанные с определенной фазой и их плагины, используя команду:

mvn help:describe -Dcmd=PHASENAME

Например, чтобы перечислить все цели, связанные с фазой compile , мы можем выполнить:

mvn help:describe -Dcmd=compile

И получить пример вывода:

compile' is a phase corresponding to this plugin:
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

Что, как упоминалось выше, означает, что цель compile из плагина compiler связана с фазой 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>

Например, чтобы запустить integration-test goal из плагина Failsafe, нам нужно запустить:

mvn failsafe:integration-test

6. Создание проекта Maven

Чтобы построить проект Maven, нам нужно выполнить один из жизненных циклов, выполнив один из их этапов:

mvn deploy

Это выполнит весь жизненный цикл default . Кроме того, мы можем остановиться на фазе install :

mvn install

Но обычно мы будем использовать команду:

mvn clean install

Чтобы очистить проект, сначала запустите жизненный цикл clean перед новой сборкой.

Мы также можем запустить только конкретную цель плагина:

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