閱讀922 返回首頁    go 阿裏雲 go 技術社區[雲棲]


maven詳解之生命周期與插件(一)

Maven是一個優秀的項目管理工具,它能夠幫你管理編譯、報告、文檔等。


Maven的生命周期:

maven的生命周期是抽象的,它本身並不做任何的工作。實際的工作都交由"插件"來完成。

maven的每個構建步驟都可以綁定一個或多個插件行為,而且maven為大多數的構建步驟編寫並綁定了默認插件。


三套生命周期:

clean、default、site

clean: 主要目的是清理項目

pre-clean: 執行一些清理前需要完成的工作

clean: 清理上一次構建生成的文件

post-clean: 執行一些清理後需要完成的工作

default:定義了真正構建時所需要執行的所有步驟,它是生命周期中最核心的部分

validate

initialize

generate-sources

process-sources: 處理項目主資源文件。一般來說,是對src/main/resources目錄的內容進行變量替換等工作後,複製到項目輸出的主classpath目錄中

generate-resources

process-resources

compile: 編譯項目的主源碼。一般來說,是編譯src/main/java目錄下的Java文件至項目輸出的主classpath目錄中

process-classes

generate-test-sources

process-test-sources: 處理項目測試資源文件。一般來說,是對src/test/resources目錄的內容進行變量替換等工作後,複製到項目輸出的測試classpath目錄中

generate-test-resources

process-test-resources

test-compile: 編譯項目的測試代碼,一般來說,是編譯src/test/java目錄下的Java文件至項目輸出的測試classpath目錄中

process-test-classes

test: 使用單元測試框架運行測試,測試代碼不會打包或部署

prepare-package

package: 接受編譯好的代碼,打包成可發布的格式,如JAR

pre-integration-test

integration-test

post-integration-test

verify

install: 將包安裝到Maven本地倉庫,供本地其他Maven項目使用

deploy: 將最終的包複製到遠程倉庫,供其他開發人員和Maven項目使用

site生命周期: 建立和發布項目站點,Maven能夠基於POM所包含的信息,自動生成站點

pre-site: 執行一些在生成項目站點之前需要完成的工作

site: 生成項目站點文檔

post-site: 執行一些在生成項目站點之後需要完成的工作

site-deploy: 將生成的項目站點發布到服務器上


Maven的生命周期的各個階段是前後階段相互依賴的,當用戶調用clean的時候,pre-clean 和 clean階段會順序執行,不會碰觸default的任何階段。


在命令行中的複雜調用和生命周期各個階段的執行情況:

從三個例子來說明:

1.$mvn test : 該命令調用default生命周期的 test 階段。實際執行的階段為default生命周期的validate到test的所有階段

2.$mvn clean install : 該命令調用clean生命周期的clean階段和default生命周期的install階段。實際執行的是clean生命周期的pre-clean、clean階段和default生命周期的validate到install的所有階段。該命令結合了兩個生命周期,是執行真正項目構建之前清理項目的一個很好的實踐。

3.$mvn clean deploy site-deploy : 該命令調用了clean生命周期的clean階段和default生命周期的deploy階段,以及site生命周期的site-deploy階段。實際執行的是clean生命周期的pre-clean、clean階段和default生命周期的所有階段,以及site生命周期的所有階段。


Maven的插件

Maven的核心分發包隻有不到3MB的大小,Maven會在需要的時候下載並使用插件,對於插件本身,為了能夠複用代碼,它往往能夠完成多個任務。Maven的生命周期與插件相互綁定,用以完成實際的構建任務。具體而言是生命周期的階段與插件的目標相互綁定,以完成某個具體的構建任務。


內置綁定

Maven在核心為一些主要的生命周期階段綁定了很多插件的目標

clean生命周期階段與插件目標的綁定關係

生命周期階段 插件目標
pre-clean  
clean maven-clean-plugin:clean
post-clean  

site生命周期階段與插件目標的綁定關係 

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


default生命周期與內置插件綁定關係及具體任務(打包類型: jar)

生命周期階段 插件目標 執行任務
process-resources maven-resources-plugin:resources 複製主資源文件至主輸出目錄
compile maven-compile-plugin:compile 編譯主代碼至主輸出目錄
process-test-resources maven-resources-plugin:testRresources 複製測試資源文件至測試輸出目錄
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 將項目輸出構件部署到遠程倉庫



人之孝:指作為一個普通人應該盡的孝道。

真孝順的標誌就是,父母吃的順心,睡得安心。我常常講,孝道就是要上敬下和,比如,你很孝順父母,可惜你跟自己的配偶鬧離婚,讓父母擔心,則你孝道不圓滿,隻有解決了父母的擔憂,才是真孝順。再如,你很孝順,可是,你家婆媳不合,則你能上敬,不能下和,不算真孝順。出嫁的媳婦如果能更孝順公婆才叫真孝順,被丈夫尊重;同樣,女婿也要更孝順嶽父嶽母,這樣可以讓妻子感到溫暖。


最後更新:2017-04-03 05:39:47

  上一篇:go NYOJ題目21-三個水杯
  下一篇:go C# Excel數據驗重及Table數據驗重