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.