mvn生命週期及其指令
mvn的指令大家都經常用到,但是說到生命週期,可能會有點懵。其實按照專案的構建和釋出過程來理解就可以了
default簡化版的生命週期包括:
validate compile test package verify install deploy
- 驗證(validate) - 驗證專案是否正確,所有必要的資訊可用
- 編譯(compile) - 編譯專案的原始碼
- 測試(test) - 使用合適的單元測試框架測試編譯的原始碼。這些測試不應該要求程式碼被打包或部署
- 打包(package) - 採用編譯的程式碼,並以其可分配格式(如JAR)進行打包。
- 驗證(verify) - 對整合測試的結果執行任何檢查,以確保滿足質量標準
- 安裝(install) - 將軟體包安裝到本地儲存庫中,用作本地其他專案的依賴項
- 部署(deploy) - 在構建環境中完成,將最終的包複製到遠端儲存庫以與其他開發人員和專案共享。
這些生命週期階段(以及此處未顯示的其他生命週期階段)依次執行,以完成預設生命週期。給定上述生命週期階段,這意味著當使用預設生命週期時,Maven將首先驗證專案,然後嘗試編譯原始碼,執行這些原始碼,打包二進位制檔案(例如jar),執行整合測試軟體包,驗證整合測試,將驗證的軟體包安裝到本地儲存庫,然後將安裝的軟體包部署到遠端儲存庫。
換句話說,在生命週期裡面階段是連續的,在不出錯的前提下,比如執行打包(package)
區分package install deploy
從jar包的角度來看:
package 僅僅把jar包放到target裡面
install 不僅把jar包放到target裡面,還部署到本地maven倉庫
deploy 不僅把jar包放到target裡面,還部署到本地maven倉庫,並上傳到遠端私服倉庫,供其他開發人員使用
package命令完成了專案編譯、單元測試、打包功能,但沒有把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫和遠端maven私服倉庫
install命令完成了專案編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫,但沒有佈署到遠端maven私服倉庫
deploy命令完成了專案編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫和遠端maven私服倉庫
mvn 生命週期參考
以下列出了預設(default),清潔(clean)和站點(site)生命週期的所有構建階段,它們按照指定的順序執行的順序執行。
清潔(clean)生命週期
預清潔(pre-clean) | 執行實際專案清理之前所需的流程 |
清潔(clean) | 刪除以前構建生成的所有檔案 |
後清潔(post-clean) | 執行完成專案清理所需的流程 |
預設(default)生命週期
驗證(validate) | 驗證專案是正確的,所有必要的資訊可用。 |
初始化(initialize) | 初始化構建狀態,例如設定屬性或建立目錄。 |
產生來源(generate-sources) | 生成包含在編譯中的任何原始碼。 |
流程源(process-sources) | 處理原始碼,例如過濾任何值。 |
生成資源(generate-resources) | 生成包含在包中的資源。 |
流程資源(process-resources) | 將資源複製並處理到目標目錄中,準備打包。 |
編譯(compile) | 編譯專案的原始碼。 |
工藝類(process-classes) | 從編譯後處理生成的檔案,例如對Java類進行位元組碼增強。 |
生成測試來源(generate-test-sources) | 生成包含在編譯中的任何測試原始碼。 |
流程測試來源(process-test-sources) | 處理測試原始碼,例如過濾任何值。 |
生成測試資源(generate-test-resources) | 建立測試資源。 |
流程測試資源(process-test-resources) | 將資源複製並處理到測試目標目錄中。 |
測試編譯(test-compile) | 將測試原始碼編譯到測試目標目錄中 |
流程檢驗類(process-test-classes) | 從測試編譯中處理生成的檔案,例如對Java類進行位元組碼增強。對於Maven 2.0.5及以上版本。 |
測試(test) | 使用合適的單元測試框架執行測試。這些測試不應該要求程式碼被打包或部署。 |
製備包(prepare-package) | 在實際包裝之前,執行必要的準備包裝的操作。這通常會導致打包的處理版本的包。(Maven 2.1及以上) |
打包(package) | 採取編譯的程式碼,並以其可分發的格式(如JAR)進行打包。 |
預整合測試(pre-integration-test) | 在執行整合測試之前執行所需的操作。這可能涉及諸如設定所需環境等。 |
整合測試(integration-test) | 如果需要,可以將該包過程並部署到可以執行整合測試的環境中。 |
整合後的測試(post-integration-test) | 執行整合測試後執行所需的操作。這可能包括清理環境。 |
校驗(verify) | 執行任何檢查以驗證包裝是否有效並符合質量標準。 |
安裝(install) | 將軟體包安裝到本地儲存庫中,以作為本地其他專案的依賴關係。 |
部署(deploy) | 在整合或釋出環境中完成,將最終軟體包複製到遠端儲存庫,以與其他開發人員和專案共享。 |
站點(site)生命週期
預網站(pre-site) | 在實際的專案現場生成之前執行所需的程序 |
網站(site) | 生成專案的站點文件 |
後網站(post-site) | 執行完成站點生成所需的程序,並準備站點部署 |
網站部署(site-deploy) | 將生成的站點文件部署到指定的Web伺服器 |