原文連結:https://blog.csdn.net/wanghantong/article/details/9375013?spm=1001.2014.3001.5502
Maven是一個優秀的項目管理工具,它能夠幫你管理編譯、報告、文檔等。
Maven的生命周期:
maven的生命周期是抽象的,它本身并不做任何的工作。實際的工作都交由"插件"來完成。
maven的每個建構步驟都可以綁定一個或多個插件行為,而且maven為大多數的建構步驟編寫并綁定了預設插件。
三套生命周期:
clean、default、site
clean: 主要目的是清理項目
pre-clean: 執行一些清理前需要完成的工作
clean: 清理上一次建構生成的檔案
post-clean: 執行一些清理後需要完成的工作
default:定義了真正建構時所需要執行的所有步驟,它是生命周期中最核心的部分
validate
initialize
generate-sources
process-sources: 處理項目主資源檔案。一般來說,是對src/main/resources目錄的内容進行變量替換等工作後,複制到項目輸出的主classpath目錄中
generate-resources
process-resources
compile: 編譯項目的主源碼。一般來說,是編譯src/main/java目錄下的Java檔案至項目輸出的主classpath目錄中
process-classes
generate-test-sources
process-test-sources: 處理項目測試資源檔案。一般來說,是對src/test/resources目錄的内容進行變量替換等工作後,複制到項目輸出的測試classpath目錄中
generate-test-resources
process-test-resources
test-compile: 編譯項目的測試代碼,一般來說,是編譯src/test/java目錄下的Java檔案至項目輸出的測試classpath目錄中
process-test-classes
test: 使用單元測試架構運作測試,測試代碼不會打包或部署
prepare-package
package: 接受編譯好的代碼,打包成可釋出的格式,如JAR
pre-integration-test
integration-test
post-integration-test
verify
install: 将包安裝到Maven本地倉庫,供本地其他Maven項目使用
deploy: 将最終的包複制到遠端倉庫,供其他開發人員和Maven項目使用
site生命周期: 建立和釋出項目站點,Maven能夠基于POM所包含的資訊,自動生成站點
pre-site: 執行一些在生成項目站點之前需要完成的工作
site: 生成項目站點文檔
post-site: 執行一些在生成項目站點之後需要完成的工作
site-deploy: 将生成的項目站點釋出到伺服器上
Maven的生命周期的各個階段是前後階段互相依賴的,當使用者調用clean的時候,pre-clean 和 clean階段會順序執行,不會碰觸default的任何階段。
在指令行中的複雜調用和生命周期各個階段的執行情況:
從三個例子來說明:
1.$mvn test : 該指令調用default生命周期的 test 階段。實際執行的階段為default生命周期的validate到test的所有階段
2.$mvn clean install : 該指令調用clean生命周期的clean階段和default生命周期的install階段。實際執行的是clean生命周期的pre-clean、clean階段和default生命周期的validate到install的所有階段。該指令結合了兩個生命周期,是執行真正項目建構之前清理項目的一個很好的實踐。
3.$mvn clean deploy site-deploy : 該指令調用了clean生命周期的clean階段和default生命周期的deploy階段,以及site生命周期的site-deploy階段。實際執行的是clean生命周期的pre-clean、clean階段和default生命周期的所有階段,以及site生命周期的所有階段。
Maven的插件
Maven的核心分發包隻有不到3MB的大小,Maven會在需要的時候下載下傳并使用插件,對于插件本身,為了能夠複用代碼,它往往能夠完成多個任務。Maven的生命周期與插件互相綁定,用以完成實際的建構任務。具體而言是生命周期的階段與插件的目标互相綁定,以完成某個具體的建構任務。
内置綁定
Maven在核心為一些主要的生命周期階段綁定了很多插件的目标
clean生命周期階段與插件目标的綁定關系
生命周期階段 | 插件目标 |
---|---|
pre-clean | |
clean | maven-clean-plugin:clean |
post-clean |
site生命周期階段與插件目标的綁定關系
生命周期階段 | 插件目标 |
---|---|
pre-site | |
site | maven-site-plugin:site |
post-site | |
site-deploy | maven-site-plugin:deploy |
default生命周期與内置插件綁定關系及具體任務(打包類型: jar)
生命周期階段 | 插件目标 | 執行任務 |
---|---|---|
process-resources | maven-resources-plugin:resources | 複制主資源檔案至主輸出目錄 |
compile | maven-compile-plugin:compile | 編譯主代碼至主輸出目錄 |
process-test-resources | maven-resources-plugin:testRresources | 複制測試資源檔案至測試輸出目錄 |
test-compile | maven-compiler-plugin:testCompile | 編譯測試代碼至測試輸出目錄 |
test | maven-surefire-plugin:test | 執行測試用例 |
package | maven-jar-plugin:jar | 建立項目jar包 |
install | maven-install-plugin:install | 将項目輸出構件安裝到本地倉庫 |
deploy | maven-deploy-plugin:deploy | 将項目輸出構件部署到遠端倉庫 |
==============================================================
參考連結:http://www.bjpowernode.com/tutorial_maven/267.html