Maven的生命週期
maven的生命週期就是對全部的構建過程的抽象和統一,maven從各類構建工具和項目中總結了一套高度完善的易擴展的生命週期。也就是說全部的構建過程都可以映射到maven的生命週期裏。Maven的生命週期是抽象的,maven的生命週期自己不作任何工做,其具體工做都是由maven插件來實現的。這種設計方式與設計模式的模板方法模式相似。maven這種定義生命週期和插件的機制,保證 全部項目有一致的構建標準,提供默認的插件簡化了構建工做,而且提供了足夠的擴展空間,能夠經過配置插件和自定插件來實現個性化的構建。java
maven 的生命週期主要有三套:clean、default和site設計模式
clean生命週期
clean週期主要是清理項目,主要包含三個階段(phase):服務器
- pre-clean : 執行清理前須要完成的工做
- clean : 執行清理上一次構建產生的一些文件
- post-clean:執行清理後須要完成的工做
default生命週期
定義了真正構建時須要完成的全部動做,下面列出一些重要的階段,也是咱們須要重點理解的:框架
- process-sources : 處理項目資源文件;通常來講是對src/main/resources目錄的內容進行變量替換等工做後,複製到項目輸出的主classpath目錄中
- compile: 編譯項目的主源碼;通常來講是對src/main/java目錄下的java文件編譯到項目輸出的主classpath目錄下。
- process-test-sources: 處理項目測試資源文件;通常來講是對src/test/resources目錄的內容進行變量替換等工做後,複製到項目輸出測試classpath目錄中
- test-compile:編譯項目的測試源碼;通常來講是對src/test/java目錄下的java文件編譯到項目輸出的測試classpath目錄下。
- test:使用單元測試框架運行測試,測試代碼不會被打包或則部署
- package:接受編譯好的代碼,打包成可發佈的格式,如:jar、war
- install:將打好的包安裝到maven的本地倉庫
- deploy:將最終的包複製到遠程倉庫
site生命週期
site生命週期的目的是簡歷和發佈項目站點,maven可以基於pom的信息自動生成一個友好的站點,方便團隊交流和發佈項目信息。該生命週期包含以下階段:maven
- pre-site:執行一些在生成項目站點以前要完成的工做
- site:生產項目站點文檔
- post-site:執行一些在生成項目站點以後要完成的工做
- site-deploy:將生成的項目站點發布到服務器上
命令行與生命週期
經過maven的命令來調用maven的生命週期,好比說:工具
mvn clean install ,maven的各個生命週期都是相互獨立的,而一個生命週期的各個階段倒是有先後依賴關係的,必須按按照順序執行,好比說咱們執行: mvn clean ,它實際上是執行了clean生命週期的兩個階段:pre-clean 和 clean 。default 和 site都是相似post