Цели и фази на Maven

1. Общ преглед

В този урок ще изследваме различни жизнени цикли на Maven build и техните фази.

Ще обсъдим и основната връзка между целите и фазите.

2. Животен цикъл на Maven Build

Компилацията на Maven следва специфичен жизнен цикъл за разгръщане и разпространение на целевия проект.

Има три вградени жизнения цикъл:

  • по подразбиране: основният жизнен цикъл, тъй като е отговорен за внедряването на проекта
  • clean: за почистване на проекта и премахване на всички файлове, генерирани от предишната компилация
  • site: за създаване на документация за сайта на проекта

Всеки жизнен цикъл се състои от последователност от фази. По подразбиране жизнения цикъл на компилацията се състои от 23 фази, тъй като това е основният жизнен цикъл на компилацията.

От друга страна, чистият жизнен цикъл се състои от 3 фази, докато жизненият цикъл на сайта се състои от 4 фази.

3. Фаза на Maven

Фазата на Maven представлява етап от жизнения цикъл на Maven build . Всяка фаза е отговорна за конкретна задача.

Ето някои от най-важните фази в жизнения цикъл на компилацията по подразбиране :

  • валидиране: проверете дали е налице цялата информация, необходима за компилацията
  • compile: компилиране на изходния код
  • test-compile: компилирайте изходния код на теста
  • тест: стартирайте модулни тестове
  • пакет: пакет, компилиран изходен код във формат, който може да се разпространява (jar, war, ...)
  • интеграционен тест: обработете и внедрете пакета, ако е необходимо, за да стартирате интеграционни тестове
  • install: инсталирайте пакета в локално хранилище
  • разполагане: копирайте пакета в отдалеченото хранилище

За пълния списък на фазите на всеки жизнен цикъл разгледайте справочника за Maven.

Фазите се изпълняват в определен ред. Това означава, че ако изпълним определена фаза с помощта на командата:

mvn 

Това не само ще изпълни определената фаза, но и всички предходни фази.

Например, ако стартираме фазата на внедряване - която е последната фаза в жизнения цикъл на компилация по подразбиране -, която ще изпълни и всички фази преди фазата на разполагане , което е целият жизнен цикъл по подразбиране :

mvn deploy

4. Гол на Maven

Всяка фаза е последователност от цели и всяка цел отговаря за конкретна задача.

Когато изпълним фаза - всички цели, обвързани с тази фаза, се изпълняват по ред.

Ето някои от фазите и целите по подразбиране, свързани с тях:

  • compiler: compile - целта на компилирането от приставката на компилатора е свързана с фазата на компилиране
  • compiler: testCompile е обвързан с фазата test-compile
  • сигурен: тестът е обвързан с фаза на теста
  • install: install е обвързан с фаза за инсталиране
  • jar: jar и war: войната е свързана с фаза на пакетиране

Можем да изброим всички цели, обвързани с определена фаза, и техните приставки с помощта на командата:

mvn help:describe -Dcmd=PHASENAME

Например, за да изброим всички цели, обвързани с фазата на компилиране , можем да изпълним:

mvn help:describe -Dcmd=compile

И вземете примерния изход:

compile' is a phase corresponding to this plugin: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

Което, както беше споменато по-горе, означава, че целта на компилирането от приставката на компилатора е свързана с фазата на компилиране .

5. Приставка Maven

Приставката Maven е група от цели. Тези цели обаче не са непременно всички обвързани с една и съща фаза.

Например, тук е проста конфигурация на приставката Maven Failsafe, която отговаря за провеждането на тестове за интеграция:

   maven-failsafe-plugin ${maven.failsafe.version}    integration-test verify      

Както виждаме, приставката Failsafe има две основни цели, конфигурирани тук:

  • интеграционен тест : стартирайте интеграционни тестове
  • verify : проверете всички преминали тестове за интеграция

Можем да използваме следната команда, за да изброим всички цели в конкретна приставка :

mvn :help

Например, за да изброите всички цели в приставката Failsafe:

mvn failsafe:help

И резултатът от това ще бъде:

This plugin has 3 goals: failsafe:help Display help information on maven-failsafe-plugin. Call mvn failsafe:help -Ddetail=true -Dgoal= to display parameter details. failsafe:integration-test Run integration tests using Surefire. failsafe:verify Verify integration tests ran using Surefire.

За да изпълним конкретна цел, без да изпълняваме цялата й фаза (и предходните фази), можем да използваме командата:

mvn :

Например, за да стартираме теста за интеграция от приставката Failsafe, трябва да стартираме:

mvn failsafe:integration-test

6. Изграждане на проект Maven

За да изградим проект на Maven, трябва да изпълним един от жизнения цикъл, като стартираме една от техните фази:

mvn deploy

Това ще изпълни целия жизнен цикъл по подразбиране . Като алтернатива можем да спрем на фазата на инсталиране :

mvn install

Но обикновено ще използваме командата:

mvn clean install

Първо да почистите проекта - като стартирате чистия жизнен цикъл - преди новата компилация.

Също така можем да изпълним само конкретна цел на приставката:

mvn compiler:compile

Имайте предвид, че ако се опитахме да изградим проект на Maven, без да посочваме фаза или цел, това ще доведе до грешката:

[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal

7. Заключение

В тази статия обсъдихме жизнения цикъл на Maven, както и връзката между фазите и целите на Maven.