JavaRush /Курси /Модуль 3. Java Professional /Фази Maven-проєкту

Фази Maven-проєкту

Модуль 3. Java Professional
Рівень 1 , Лекція 4
Відкрита

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 відображає ще дві команди: clean та site. clean використовується для того, щоб повністю очистити папку target, а site вміє створювати документацію проєкту.

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 solutions, please read the following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

У лозі буде купа корисної інформації, і згодом ти навчишся її розуміти та цінувати.

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.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ