Для чего используется фаза `install` в Maven?

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

Ответ

Цель фазы install: Собрать проект и установить сгенерированный артефакт (например, JAR-файл) в локальный репозиторий Maven (обычно ~/.m2/repository). Это делает артефакт доступным для использования в качестве зависимости в других проектах на той же машине.

Выполнение:

mvn install

Что происходит при запуске mvn install (последовательность фаз жизненного цикла default):

  1. validate – Проверка корректности проекта.
  2. compile – Компиляция исходного кода.
  3. test – Запуск модульных тестов.
  4. package – Упаковка скомпилированного кода в распределяемый формат (JAR, WAR и т.д.).
  5. install – Копирование артефакта и его POM-файла в локальный репозиторий.

Ключевые отличия от смежных команд:

Команда Действие Репозиторий Назначение
mvn package Создает артефакт в папке target. Не затрагивается Локальное тестирование финального артефакта.
mvn install Выполняет package + устанавливает артефакт локально. Локальный (~/.m2) Использование артефакта в других локальных проектах.
mvn deploy Выполняет install + копирует артефакт в удаленный репозиторий. Локальный + Удаленный (Nexus, Artifactory) Публикация артефакта для команды или CI/CD.

Таким образом, install — это мост между локальной сборкой (package) и публикацией для общего доступа (deploy).