Какие основные жизненные циклы и фазы существуют в Apache Maven?

«Какие основные жизненные циклы и фазы существуют в Apache Maven?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Apache Maven определяет три встроенных жизненных цикла (lifecycle), каждый из которых состоит из последовательности фаз (phase).

Основные жизненные циклы:

  1. clean – очистка проекта. Удаляет директорию target со всеми скомпилированными артефактами.

    • Основные фазы: pre-clean, clean, post-clean.
  2. default (или build) – основной цикл сборки и развертывания проекта.

    • Ключевые фазы (по порядку выполнения):
      • validate – проверка корректности проекта.
      • compile – компиляция исходного кода.
      • test – запуск модульных тестов.
      • package – упаковка скомпилированного кода в распределяемый формат (JAR, WAR).
      • verify – запуск интеграционных тестов.
      • install – установка пакета в локальный репозиторий Maven (~/.m2/repository).
      • deploy – копирование финального пакета в удаленный репозиторий.
  3. site – генерация документации и отчетов по проекту.

    • Основные фазы: pre-site, site, post-site, site-deploy.

Важно: Фазы выполняются последовательно. Вызов фазы автоматически запускает все предыдущие фазы в ее жизненном цикле. Например, команда mvn install выполнит фазы validate, compile, test, package, verify и затем install.

Пример конфигурации плагина, привязанного к фазе compile:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>17</source>
                <target>17</target>
            </configuration>
        </plugin>
    </plugins>
</build>