Mavan最主要的命令:mvn clean compile、mvn clean test、mvn clean package、mvn clean install。執行test之前,先執行compile、執行package之前先執行test、執行install之前先執行package,這就涉及到一個概念:Maven生命週期。
compile-test-package-install
編譯、測試、打包、部署
在Maven中有三套獨立的生命週期:
- 1、Clean Lifecycle(清理):在進行真正的構建之前進行一些清理工作
- 2、Default Lifecycle(默認)):構建的核心部分,編譯、測試、打包、部署
- 這一生命週期裏主要包括這些事(不完整):
-
- 驗證(validate) - 驗證項目是否正確,所有必要的信息可用
- 編譯(compile) - 編譯項目的源代碼
- 測試(test) - 使用合適的單元測試框架測試編譯的源代碼。這些測試不應該要求代碼被打包或部署
- 打包(package) - 採用編譯的代碼,並以其可分配格式(如JAR)進行打包。
- 驗證(verify) - 對集成測試的結果執行任何檢查,以確保滿足質量標準
- 安裝(install) - 將軟件包安裝到本地存儲庫中,用作本地其他項目的依賴項
- 部署(deploy) - 在構建環境中完成,將最終的包複製到遠程存儲庫以與其他開發人員和項目共享
-
- 任何一個階段的時候,它前面的所有階段都會被運行
,這也就是爲什麼我們運行mvn clean install的時候,代碼會被編譯、測試、打包。
此外,Maven的插件機制是完全依賴Maven生命週期的,因此理解生命週期至關重要。
Maven的生命週期是抽象的,實際需要插件來完成任務,這一過程是通過將插件的目標(goal)綁定到生命週期的具體階段(phase)來完成的。如:將maven-compiler-plugin插件的compile目標綁定到default生命週期的compile階段,完成項目的源代碼編譯:
- 任何一個階段的時候,它前面的所有階段都會被運行
- 3、Site Lifecycle(站點):生成項目報告、生成站點、發佈站點