1. 程式人生 > >mvn生命週期及其指令

mvn生命週期及其指令

mvn的指令大家都經常用到,但是說到生命週期,可能會有點懵。其實按照專案的構建和釋出過程來理解就可以了

default簡化版的生命週期包括:

validate compile test package verify install deploy

  • 驗證(validate) - 驗證專案是否正確,所有必要的資訊可用
  • 編譯(compile) - 編譯專案的原始碼
  • 測試(test) - 使用合適的單元測試框架測試編譯的原始碼。這些測試不應該要求程式碼被打包或部署
  • 打包(package) - 採用編譯的程式碼,並以其可分配格式(如JAR)進行打包。
  • 驗證(verify) - 對整合測試的結果執行任何檢查,以確保滿足質量標準
  • 安裝(install) - 將軟體包安裝到本地儲存庫中,用作本地其他專案的依賴項
  • 部署(deploy) - 在構建環境中完成,將最終的包複製到遠端儲存庫以與其他開發人員和專案共享。

這些生命週期階段(以及此處未顯示的其他生命週期階段)依次執行,以完成預設生命週期。給定上述生命週期階段,這意味著當使用預設生命週期時,Maven將首先驗證專案,然後嘗試編譯原始碼,執行這些原始碼,打包二進位制檔案(例如jar),執行整合測試軟體包,驗證整合測試,將驗證的軟體包安裝到本地儲存庫,然後將安裝的軟體包部署到遠端儲存庫。

換句話說,在生命週期裡面階段是連續的,在不出錯的前提下,比如執行打包(package)

時就一定是執行了測試(test)之後再執行。

區分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伺服器