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