JavaRush /Курсы /JSP & Servlets /Фазы Maven-проекта

Фазы Maven-проекта

JSP & Servlets
1 уровень , 4 лекция
Открыта

5.1 Список фаз проекта

Наконец-то мы добрались до сборки проекта. И тут ты будешь немного удивлен. Ну или сильно, как получится. Maven пересмотрел подход к сборке проекта. И сейчас ты в этом убедишься.

Вся сборка проекта была разбита на фазы, описание которых я приведу в таблице ниже:

Order Фаза
1 validate проверяет корректность метаинформации о проекте
2 compile компилирует исходники
3 test прогоняет тесты классов из предыдущего шага
4 package упаковывает скомпилированные классы в новый артефакт: jar, war, zip, …
5 verify проверяет корректность артефакта и удовлетворение требованиям качества
6 install кладет артефакт в локальный репозиторий
7 deploy заливает артефакт на production-сервер или удаленный репозиторий

При этом шаги четко последовательны. Если ты скомандуешь Maven выполнить команду package, он перед этим выполнит фазы validate, compile, test и только затем package

В принципе ничего нового тут нет, разве что появились отдельные фазы для контроля качества: validate, test, verify. И целых две фазы для деплоя сборки – install и deploy.

Чтобы запустить определенную фазу, достаточно написать команду maven phase. Например, для сборки нужно выполнить команду maven package. И тому подобное.

Intellij IDEA отлично умеет работать с этими фазами и у нее справа есть специальное меню для этих целей:

maven phase

Тут кроме известных фаз, IDEA отображает еще 2 команды: clean и site. clean используется для того, чтобы полностью очистить папку target, а site умеет создавать документацию проекта.

5.2 Сборка проекта

Если ты хочешь скомпилировать проект, то нужно запустить фазу compile. Это можно сделать с помощью командной строки: mvn compile или через интерфейс IDEA – кликнув по пункту compile.

После этого Maven запустит сборку проекта и ты увидишь лог процесса сборки подобный этому:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.742 s
[INFO] Finished at: 2016-09-19T22:41:26+04:00
[INFO] Final Memory: 7M/18M
[INFO] ------------------------------------------------------------------------

Если что-то пошло не так, то лог будет типа такого:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project demo: Fatal error compiling: invalid target release: 11 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible sliutions, please read the flilowing articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

В логе будет куча полезной информации, со временем ты научишься ее понимать и ценить.

5.3 Циклы работы

Все команды maven делятся на три группы – lifecycles. Их называют жизненными циклами, так как они задают порядок фаз, которые выполняются во время сборки или определенного жизненного цикла, потому что не все действия Maven являются сборкой.

Всего жизненных циклов три:

  • clean;
  • default;
  • site.

И у каждого из них есть свой порядок фаз. У clean он самый короткий:

  1. pre-clean;
  2. clean;
  3. post-clean.

Были добавлены скрытые дополнительные фазы pre-clean и post-clean, чтобы сценарий очистки можно было сделать более гибким.

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

  1. pre-site
  2. site;
  3. post-site;
  4. site-deploy.

Стандартные жизненные циклы могут быть дополнены функционалом с помощью Maven-плагинов. Об этом расскажем позднее, ведь это очень интересная тема, которая заслуживает отдельной лекции.

И самый длинный список фаз у сценария default:

  1. validate;
  2. generate-sources;
  3. process-sources;
  4. generate-resources;
  5. process-resources;
  6. compile;
  7. process-test-sources;
  8. process-test-resources;
  9. test-compile;
  10. test;
  11. package;
  12. install;
  13. deploy.

Тут есть все те же фазы, о которых вы уже знаете, но добавились еще несколько необязательных.

Во-первых, популярный в больших проектах этап – generate-sources: генерация Java-кода на основе XML, например. И парный ему process-sources, который что-то с этим кодом делает.

Во-вторых, генерация ресурсов – generate-resources и парный ему метод process resources. Ты будешь часто видеть какие-нибудь действия, привязанные к этим фазам в крупных проектах.

И наконец – тестирование. Оно имеет три дополнительных необязательных фазы, которые помогают сделать запуск фазы тестирования максимально гибким: process-test-sources, process-test-resources, test-compile.

Комментарии (20)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Alexander Уровень 1
3 сентября 2025
Полный список фаз default lifecycle 1. validate Проверка проекта: структура, pom.xml, зависимости, плагины. 2. initialize Инициализация: подготовка переменных, директорий, возможно создание папок для сборки. 3. generate-sources Генерация исходников (если нужно). ➝ Например, плагины, которые генерируют код по шаблонам, WSDL, OpenAPI. 4. process-sources Обработка исходников. ➝ Может применяться кодогенерация, форматирование, аннотации. 5. generate-resources Генерация ресурсов (конфиги, отчёты). ➝ Пример: плагин генерирует application.properties. 6. process-resources Копирование и фильтрация ресурсов в target/classes. ➝ Берёт файлы из src/main/resources и кладёт их в папку сборки. 7. compile Компиляция основного кода (src/main/java). ➝ Результат в target/classes. 8. process-classes Доп. обработка скомпилированных классов. ➝ Например, пост-обработка байткода (инструменты типа bytecode enhancer). 9. generate-test-sources Генерация тестовых исходников. ➝ Автогенерация тестов, вспомогательного кода. 10. process-test-sources Обработка тестовых исходников. ➝ Подготовка тестов (аннотации, форматирование). 11. generate-test-resources Генерация тестовых ресурсов. ➝ Например, создание mock-файлов для тестов. 12. process-test-resources Копирование и фильтрация тестовых ресурсов в target/test-classes. ➝ Берёт src/test/resources. 13. test-compile Компиляция тестов (src/test/java). ➝ Результат в target/test-classes. 14. process-test-classes Доп. обработка скомпилированных тестов. ➝ Например, инструменты анализа покрытия кода.
Alexander Уровень 1
3 сентября 2025
15. test Запуск юнит-тестов (JUnit, TestNG). ➝ Артефакт ещё не готов, тесты гоняются на временной сборке. 16. prepare-package Действия перед упаковкой. ➝ Например, подготовка манифеста для JAR. 17. package Упаковка артефакта (jar, war, ear). ➝ Итог лежит в target/. 18. pre-integration-test Подготовка к интеграционным тестам. ➝ Поднять тестовую БД, сервер. 19. integration-test Запуск интеграционных тестов. ➝ Тесты работают уже с собранным пакетом. 20. post-integration-test Очистка после интеграционных тестов. ➝ Остановить сервер, удалить временные данные. 21. verify Проверка артефакта перед установкой/деплоем. ➝ Часто используют для интеграционных тестов, правил качества (Checkstyle, PMD). 22. install Установка артефакта в локальный репозиторий (~/.m2/repository). ➝ Теперь этот артефакт можно использовать в других проектах. 23. deploy Публикация артефакта в удалённый репозиторий (Nexus, Artifactory, Maven Central). ➝ Доступен для других разработчиков и CI/CD.
Svetlana S Уровень 3
25 августа 2025
Запомните фазы, их спрашивают
Олег Уровень 106 Expert
31 июля 2024
Ну оно как бы понятно, но я хрен это запомню, ребятки.
Андрей Уровень 37 Expert
11 июля 2024
И самый длинный список фаз у сценария default: - настоящий ,а не эта пародия
Владислав Уровень 87
12 апреля 2025
Спасибо конечно, но хоть бы основы правильно запомнить)
Realtrac Уровень 6
28 августа 2023
Объяснение от известной нейросети: Давай представим, что твой проект - это как домик, который ты строишь. А Maven - это как строительный мастер, который знает, как взять все необходимые ингредиенты (код, библиотеки и т.д.) и собрать их вместе, чтобы создать готовый домик. Теперь давай разберемся с этими "жизненными циклами". Представь, что у твоего домика есть три этапа: подготовка, строительство и оформление. Цикл "clean" (подготовка): Когда ты решаешь начать строительство заново, то сначала ты убираешь все лишнее и чистишь участок. То же самое делает Maven с помощью "clean". Он удаляет всю старую информацию, чтобы начать "строительство" с чистого листа. Цикл "default" (строительство): Это самый важный этап. Здесь Maven берет все твои исходные материалы (код, библиотеки) и начинает их компоновать. Сначала он "compile" (компилирует) исходный код, затем "test" (проверяет) его, чтобы убедиться, что все работает правильно. После этого он "package" (упаковывает) все вместе, как конструктор, чтобы получить готовый продукт. Цикл "site" (оформление): Представь, что ты готовишь дом для посетителей. Ты украшаешь его, чтобы он выглядел красиво и информативно. Точно также Maven делает "site". Он создает документацию, отчеты и другую информацию, чтобы проект был "пригоден к показу". Так что, эти три жизненных цикла в сущности представляют собой этапы работы Maven, которые помогают собрать и организовать твой проект, как домик, чтобы он был готов к использованию и показу.
24 декабря 2023
какое милое объяснение )))
Anastasia Уровень 51
18 февраля 2025
лучше бы вы свое обьяснение писали, а не тупо чат гпт копировали
1 мая 2025
скажи спасибо что тут хотяб тебе объяснили
Dmitry Tolstov Уровень 13
15 июля 2023
Наверное в статье имеется ввиду группы жизненных циклов clean, default, site состоящие фаз
Elvin Yagudin Уровень 1
14 марта 2023
не совсем понял, как жизненный цикл соотносится с фазами?у кажой фазы есть жизненный цикл или наоборот или они вообще никак не связаны?Если цикл состоит из фаз, то почему в default цикле нет фазы verify?
OHHHBABY Уровень 33 Expert
24 октября 2022
Ребят, поделитесь пж какими-нибудь хорошими ресурсами, видосами с ютуба по maven'у
Ольга Уровень 19
25 октября 2022
Добрый вечер. Мне понравилось это видео https://www.youtube.com/watch?v=IAbZVA4tK6M В целом Немчинский неплохо объясняет
comrade_b Уровень 39
1 ноября 2022
Я еще не посмотрел полностью видос, и я только вначале этого квеста... но меня смущает дата видео - 2013, а еще больше смущает дата презентации в видео - 2007. Итого 15 лет... Мне кажется, надо что-то поновее будет поискать. А то пахнуло динозаврами 🦖
Ольга Уровень 19
9 ноября 2022
Основы мавена не изменились с тех пор, мне понравилось, что объясняют доходчиво для новичков. В целом конечно дело каждого.
26 февраля 2023
снято на нокию 3310, сложновато смотреть)
Денис Уровень 19
20 марта 2023
У Немчиского много чему можно поучиться, но он сам говорил что не стоит смотреть материалы, читать книги и статьи вышедшие 5 - 6 лет назад, лучше до 3х лет если не указано оттедльно что "это актуально на настоящий год"
Сергей Уровень 108 Expert
9 мая 2023
посмотрел на ускоренном просмотре 2 части 1,5часа. здесь в лекции и то больше информации. в видосе 90% воды-философии о том как было и как будет.... реально можно было в 10 мин все это вместить
Уровень 51
28 мая 2022
за это лайк