一起學Maven(Maven中的生命週期與插件機制)

Maven的生命週期

    就像人生一樣,出生,成長,死亡,這個每個人乃至整個生命都擁有的特性。Maven的構造者就發現,整個項目的構建過程都擁有高度的相似性,清理、初 始化、編譯、測試、打包、集成測試、驗證、部署、站點發布等等,於是,Maven就在這些過程中抽象出三套執行機制,也就是獨立的三種生命週期,分別是

  • Clean Lifecycle 項目的構建之前進行清理操作
  • Compile(Default) Lifecycle 主要進行項目構建的操作,編譯測試打包部署等核心操作
  • Site Lifecycle 項目報告的生成,站點發布操作

完整生命週期(供參考)

1.Clean 
  pre-clean 執行一些清理前需要完成的工作。
  clean 清理上一次構建生成的文件
  post-clean 執行一些清理後需要完成的工作
2.Compile(Default) 
  validate 驗證項目是正確的並且所有必需的信息都是可用的
  initialize 初始化構建狀態
  generate-sources 產生所有的用來編譯的源代碼
  process-sources 處理源代碼
  generate-resources 產生包含在package中的資源
  process-resources 複製和處理資源到目標目錄,爲打包做好準備
  compile 編譯項目的主源代碼
  process-classes 對編譯器產生的文件進行後期處理
  generate-test-sources 產生所有用來編譯的測試源代碼
  process-test-sources 處理測試源代碼
  generate-test-resources 創建測試所需要的資源
  process-test-resources 複製和處理資源到測試目標目錄
  compile 編譯測試源代碼到目標目錄
  process-test-classes 對編譯測試源代碼產生的文件進行後期處理
  test 使用適當的單元測試框架運行測試,這些測試代碼不應該被打包或者部署
  prepare-package 執行所有需要執行的操作爲打包做準備,這往往會產生一個還未打包的處理過的包版本
  package 使用設置的方式對編譯過的文件進行打包
  pre-integration-test 執行一些集成測試執行前必須的操作
   integration-test 處理和部署包到集成測試環境中,進行測試
  post-integration-test 對集成測試進行後期處理
   verify 執行所有檢查確保包是正確的和符合質量要求的
  install 將包安裝至本地倉庫,以讓其它項目依賴
    deploy 將最終的包複製到遠程的倉庫,以讓其它開發人員與項目共享
3.Site 
  pre-site 前期準備
  site 產生項目的站點文檔
  post-site 後期處理
  site-deploy 部署站點到服務器

插件機制

    雖然Maven生命週期中有這麼多個執行過程,但這些都是一個抽象的概念,這個概念性的東西意味着它並不做任何實質性的事情,也就是說:它就像接口,只定義規範,具體細節它不管。具體的 實現細節則交給了Maven 的各個豐富的插件,也就是說Maven的插件是要完全依賴於Maven的生命週期的,根據週期中的這些執行過程,纔可以定義出相應功能的插件。

    因此Maven的生命週期和Maven插件是相輔相成的,只有週期,沒有插件,Maven是沒有法子執行相應的操作,只有插件,沒有周期,插件將失去了意義,在這裏,可以很好的讚歎Maven的開發者多麼智慧的頭腦,以及多好的設計原則。

    (待修改...)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章