Maven的生命周期
Maven的生命周期是Maven很重要的一個特性。
Maven的生命周期定義了一系列的階段(phase)。運行Maven命令執行的每個步驟都由生命周期來指定。
Maven有三套相互獨立的生命周期,分別是Clean 生命周期、Default 生命周期、Site生命周期。生命周期都由一組階段(Phase)組成,我們平時在命令行輸入的命令總會對應于一個特定的階段。
下面具體說一下每個生命周期。
Clean LifeCycle
Clean生命周期一共包含了三個階段:
- pre-clean 執行一些需要在clean之前完成的工作
- clean 移除所有上一次構建生成的文件
- post-clean 執行一些需要在clean之后立刻完成的工作
比如當我們執行mvn clean 命令的時候,clean對應的就是上面的clean階段。在Maven的生命周期中,當運行某一個階段的時候,他之前的所有階段都會被運行,也就是說mvn clean 等同于 mvn pre-clean clean 。mvn的這個規則可以大大的簡化命令行的輸入。
Site LifeCycle
下面看一下Site生命周期的各個階段:
- pre-site 執行一些需要在生成站點文檔之前完成的工作
- site 生成項目的站點文檔
- post-site 執行一些需要在生成站點文檔之后完成的工作,并且為部署做準備
- site-deploy 將生成的站點文檔部署到特定的服務器上
這里經常用到的是site階段和site-deploy階段,用以生成和發布Maven站點,這可是Maven相當強大的功能,Manager比較喜歡,文檔及統計數據自動生成,很好看。
Default LifeCycle
- validate
- generate-sources
- process-sources
- generate-resources
- process-resources 復制并處理資源文件,至目標目錄,準備打包。
- compile 編譯項目的源代碼。
- process-classes
- generate-test-sources
- process-test-sources
- generate-test-resources
- process-test-resources 復制并處理資源文件,至目標測試目錄。
- test-compile 編譯測試源代碼。
- process-test-classes
- test 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署。
- prepare-package
- package 接受編譯好的代碼,打包成可發布的格式,如 JAR 。
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install 將包安裝至本地倉庫,以讓其它項目依賴。
- deploy 將最終的包復制到遠程的倉庫,以讓其它開發人員與項目共享。
記住,運行任何一個階段的時候,它前面的所有階段都會被運行,這也就是為什么我們運行mvn install 的時候,代碼會被編譯,測試,打包。