1. 程式人生 > >maven 插件深入了解

maven 插件深入了解

stc 項目 int 本地 pac 目的 maven構建 cycle 聲明

http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin

http://www.infoq.com/cn/news/2011/05/xxb-maven-8-plugin

整體介紹:

http://blog.jobbole.com/107576/ 寫得相當不錯!

插件

生命周期的階段phase與插件的目標goal相互綁定, 用以完成實際的構建任務. 而對於插件本身, 為了能夠復用代碼,它往往能夠完成多個任務, 這些功能聚集在一個插件裏,每個功能就是一個目標.
如:$ mvn compiler:compile: 冒號前是插件前綴, 後面是該插件目標(即: maven-compiler-plugin

compile目標).
而該目標綁定了default生命周期的compile階段:

內置綁定

為了能讓用戶幾乎不用任何配置就能使用Maven構建項目, Maven 默認為一些核心的生命周期綁定了插件目標, 當用戶通過命令調用生命周期階段時, 對應的插件目標就會執行相應的邏輯.

  • clean生命周期階段綁定
生命周期階段插件目標
pre-clean
clean maven-clean-plugin:clean
post-clean
  • default聲明周期階段綁定
生命周期階段插件目標執行任務
process-resources maven-resources-plugin:resources 復制主資源文件到主輸出目錄
compile maven-compiler-plugin:compile 編譯主代碼到主輸出目錄
process-test-resources maven-resources-plugin:testResources 復制測試資源文件到測試輸出目錄
test-compile maven-compiler-plugin:testCompile 編譯測試代碼到測試輸出目錄
test maven-surefire-plugin:test 執行測試用例
package maven-jar-plugin:jar 打jar包
install maven-install-plugin:install 將項目輸出安裝到本地倉庫
deploy maven-deploy-plugin:deploy 將項目輸出部署到遠程倉庫

註: 上表只列出了打包方式為jar且擁有插件綁定關系的階段, 其他打包類型生命周期的默認綁定關系可參考: Built-in Lifecycle Bindings、Plugin Bindings for default Lifecycle Reference.

  • site生命周期階段綁定
生命周期階段插件目標
pre-site
site maven-site-plugin:site
post-site
site-deploy maven-site-plugin:deploy

自定義綁定

除了內置綁定以外, 用戶還能夠自定義將某個插件目標綁定到生命周期的某個階段上. 如創建項目的源碼包, maven-source-plugin插件的jar-no-fork目標能夠將項目的主代碼打包成jar文件, 可以將其綁定到verify階段上:

總結

一個生命周期 有多個 階段, 一個階段 可能有多個 目標。

maven 插件深入了解