Maven — это [[../../../../knowledge/dev/Система сборки|инструмент для автоматизации сборки проектов]], который управляет их жизненным циклом. Жизненный цикл Maven состоит из нескольких фаз, каждая из которых выполняет определенную задачу, необходимую для успешной сборки и управления проектом.
## Основные фазы жизненного цикла
1.**validate** — Проверка корректности проекта и наличия всей необходимой информации.
3.**test** — Запуск тестов (обычно с использованием JUnit или TestNG) и проверка их успешного выполнения.
4.**package** — Сборка скомпилированного кода и упаковка его, например, в JAR или WAR-файл.
5.**verify** — Проверка собранных артефактов и результатов тестов.
6.**install** — Установка пакета в локальный репозиторий для использования в других проектах.
7.**deploy** — Отправка финального пакета в удаленный репозиторий для использования в других проектах или на сервере.
> [!WARNING]
> Фазы выполняются последовательно, и каждая фаза зависит от предыдущих. Например, при запуске команды `mvn install` Maven автоматически выполнит все предыдущие фазы — от `validate` до `install`.
## Основные команды
-`mvn clean` — Удаляет папку `target`, очищая проект от предыдущих сборок. Полезно использовать перед началом новой сборки, чтобы избежать конфликтов.
-`mvn compile` — Компилирует исходный код проекта. Используется на этапе разработки для проверки, что код компилируется без ошибок.
-`mvn test` — Запускает тесты. Применяется для проверки корректности работы кода после изменений.
-`mvn package` — Упаковывает скомпилированный код в конечный артефакт (обычно JAR или WAR). Используется, когда необходимо подготовить проект для развертывания.
-`mvn install` — Устанавливает артефакт в локальный репозиторий. Применяется для того, чтобы сделать артефакт доступным для других локальных проектов.
-`mvn deploy` — Деплоит артефакт в удаленный репозиторий. Используется для распространения артефакта среди других разработчиков или для развертывания на сервере.
-`mvn site` — Генерирует документацию проекта на основе кода и зависимостей. Полезно для создания отчетов и документации по проекту.