Maven命令的輸入往往就對(duì)應(yīng)了生命周期、比如mvncompile就表示執(zhí)行默認(rèn)生命周期階段compile。Maven的生命周期是抽象的、其實(shí)際行為都是由插件完成的。比如mvncompile就可能會(huì)由maven-compile-plugin完成。生命周期和插件是協(xié)同工作。
1、 ? ?何為生命周期
項(xiàng)目構(gòu)件中進(jìn)行的清理、編譯、測(cè)試及部署都可以視作一個(gè)一個(gè)項(xiàng)目的生命周期、但是每個(gè)項(xiàng)目每個(gè)人都有不一樣的順序不一樣的實(shí)現(xiàn)方式。沒有統(tǒng)一性帶來的不方便已經(jīng)不言而喻。
Maven的生命周期就是為例對(duì)所有的構(gòu)建過程進(jìn)行抽象和統(tǒng)一。抽象與項(xiàng)目、應(yīng)用與項(xiàng)目、總結(jié)了一套完善易擴(kuò)展的生命周期:清理、初始化、編譯、測(cè)試、打包、集成測(cè)試、驗(yàn)證、部署和站點(diǎn)生成。Maven的生命周期是抽象的、意味著生命周期不做任何實(shí)際工作。實(shí)際工作都是由插件完成。
2、 ? ?三套生命周期
Maven的有三套生命周期:clean、default、site。每個(gè)生民周期包含不同的階段(phase)、階段是有序的、執(zhí)行生命周期的每個(gè)階段時(shí)此phase的前面的所有階段都會(huì)被執(zhí)行。
2.1、? ? Clean:
pre-clean、
clean、
post-clean。
2.2、? ? Default:
validate
initialize
generate-sources
process-sources:處理項(xiàng)目主資源、一般是將src/main/resources目錄的內(nèi)容進(jìn)行變量替換工作后、復(fù)制到項(xiàng)目輸出的主classpath目錄中。
generate-resources
process-resources
compile編譯項(xiàng)目的主源碼、一般是編譯src/main/java目錄下的Java文件至項(xiàng)目輸出的主classpath目錄中。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
test-compile:編譯項(xiàng)目的測(cè)試源碼、一般是編譯src/test/java目錄下的Java文件至項(xiàng)目輸出的測(cè)試classpath目錄中。
process-test-classes
test:使用單元測(cè)試框架運(yùn)行測(cè)試、測(cè)試代碼不會(huì)被打包或部署
prepare-package
package
pre-intergration-test
integration-test
post-intergration-test
verify
install:將包安裝到Maven本地倉庫。
deploy:將包復(fù)制到遠(yuǎn)程倉庫
2.3、? ? Site生命周期
pre-site
site:生成項(xiàng)目站點(diǎn)文檔
post-site
site-deploy:將生成的項(xiàng)目站點(diǎn)發(fā)布到服務(wù)器上
3、? ? 命令行與生命周期:
$mvnclean 執(zhí)行pre-clean——》clean
$mvnclean install 執(zhí)行上面提到的clean、執(zhí)行default生命周期從開始到install所有生命周期階段。