生命周期和插件

生命周期和插件是maven的兩個(gè)核心概念,一次mvn命令的執(zhí)行就對(duì)應(yīng)了一次生命周期。而生命周期是一個(gè)抽象的概念,他的具體實(shí)現(xiàn)都需要插件來完成。

生命周期

maven有三套相互獨(dú)立的生命周期:clean,default和site。

  • clean:目的是清理項(xiàng)目(pre-clean、clean、post-clean)
  • default: 目的是構(gòu)建項(xiàng)目(validate、compile、test、package、verify、install、deploy)
  • site:目的是建立項(xiàng)目站點(diǎn) (pre-site、site、post-site、site-deploy)
生命周期 階段(phase) 內(nèi)置插件: Goal 說明
clean pre-clean - 執(zhí)行清理前需要完成的工作
clean clean maven-clean-plugin:clean 執(zhí)行清理前需要完成的工作
clean post-clean - 執(zhí)行清理后需要完成的工作
default vaildate - 驗(yàn)證,確保當(dāng)前配置和POM內(nèi)容是有效的,包含對(duì)POM文件樹的驗(yàn)證。
default intianlize - 初始化,執(zhí)行構(gòu)建生命周期的主任務(wù)之前的初始化
default generate-sources - 生成源碼,代碼生成器生成后期階段中處理或編譯的源代碼
default proccess-sources - 處理源碼,提供解析、修改和轉(zhuǎn)換源碼。常規(guī)源碼和生成的源碼都可以再這里處理
default generate-resoureces - 生成資源,生成非源碼資源,通常包括元數(shù)據(jù)文件和配置文件執(zhí)行清理前需要完成的工作
default process-resources maven-resources-plugin:resources 處理資源,處理非源碼資源,修改、轉(zhuǎn)換和重定位資源都能在這階段發(fā)生
default compile maven-compiler-plugin:compile 編譯,編譯源碼。編譯過的類被放到目標(biāo)目錄樹中
default generate-resoureces - 處理類,處理類文件轉(zhuǎn)換和增強(qiáng)步驟。字節(jié)碼交織器和常用工具常在這一階段操作
default generate-test-sources - 生成測(cè)試源碼,生成要操作的單元測(cè)試代碼
default process-test-sources - 處理測(cè)試源碼,在編譯前對(duì)測(cè)試源碼執(zhí)行任何必要的處理。修改、轉(zhuǎn)換或復(fù)制源代碼
default generate-test-resources - 生成測(cè)試資源,生成與測(cè)試相關(guān)的非源碼資源
default process-test-resources maven-resources-plugin:testResources 處理測(cè)試資源,處理、轉(zhuǎn)換或重新定位于測(cè)試相關(guān)的資源
default test-compile maven-compiler-plugin:testCompile 測(cè)試編譯,編譯單元測(cè)試的源碼
default process-test-classes - 處理測(cè)試類,對(duì)編譯生成文件做后期處理(Maven2.0.5及以上)
default test maven-surefire-plugin:test 測(cè)試,運(yùn)行編譯過的單元測(cè)試并累計(jì)結(jié)果
default prepare-package - 執(zhí)行打包前的所有操作(Maven2.1及以上)
default package maven-jar-plugin:jar 打包,將可執(zhí)行的二進(jìn)制文件打包到一個(gè)分布式歸檔文件中,如jar或war
default pre-integration-test - 前集成測(cè)試,準(zhǔn)備集成測(cè)試,將歸檔文件部署到一個(gè)服務(wù)器上執(zhí)行
default integration-test - 集成測(cè)試,執(zhí)行真正的集成測(cè)試,指在一個(gè)受到一定控制的模擬的真實(shí)部署環(huán)境中測(cè)試代碼
default post-integration-test - 后集成測(cè)試,解除集成測(cè)試準(zhǔn)備,涉及環(huán)境重置或重新初始化
default verify - 檢驗(yàn),檢驗(yàn)可部署歸檔文件的有效性和完整性,通過后,將安裝該歸檔
default install maven-install-plugin:install 安裝,將項(xiàng)目包安裝到本地倉庫,供其他項(xiàng)目依賴
default deploy maven-deploy-plugin:deploy 部署,將項(xiàng)目發(fā)布到遠(yuǎn)程倉庫,供其他開發(fā)人員與項(xiàng)目共享
site pre-site - 執(zhí)行一些在生成項(xiàng)目站點(diǎn)之前需要完成的工作
site site maven-site-plugin:site 生成項(xiàng)目站點(diǎn)文檔
site peo-site - 執(zhí)行一些在生成項(xiàng)目站點(diǎn)之后需要完成的工作
site site-deploy maven-site-plugin:deploy 將生成的項(xiàng)目站點(diǎn)發(fā)布到服務(wù)器上

命令執(zhí)行生命周期

一個(gè)mvn可以可以對(duì)應(yīng)一次生命周期,但是mvn命令的不同對(duì)應(yīng)了不同的生命周期。
mvn clean 僅執(zhí)行clean生命周期的pre-clean和clean階段
mvn test 僅執(zhí)行default生命周期的validate、compile、test階段
mvn clean 執(zhí)行clean生命周期的pre-clean和clean階段以及default生命周期的validate、compile、test、package階段

插件

Maven的核心僅定義了抽象的生命周期,具體的任務(wù)是交由插件完成,插件以獨(dú)立的構(gòu)件形式存在。
一個(gè)插件往往具備多個(gè)功能,而每個(gè)功能對(duì)應(yīng)著一個(gè)插件目標(biāo)(Goal)。

生命周期的階段和插件目標(biāo)的綁定

為了減少用戶的配置,maven給一些主要的生命周期階段綁定了很多插件的目標(biāo),maven clean生命周期的clean階段綁定了maven-clean-plugin的clean目標(biāo),當(dāng)執(zhí)行mvn clean時(shí)就會(huì)調(diào)用maven-clean-plugin的clean目標(biāo),這些都屬于內(nèi)置的綁定。
當(dāng)然用戶可以自己定義綁定,例如可以將maven-source-plugin的jar-no-fork目標(biāo)(將項(xiàng)目的主代碼打包成jar文件)綁定到default生命周期的verify階段上。

<bulid>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.1.1</version>
    <executons>
      <execution>
        <id>attach-sources</id>
        <phase>verify</phase>
        <goals>
          <goal>jar-no-fork</goal>
        </goals>
      </execution>
    </executons>
  </plugin>
</plugins>
</bulid>

執(zhí)行插件目標(biāo)

mvn 插件前綴 : 目標(biāo)(例如:maven-help-plugin插件,help為插件前綴)
可以調(diào)用插件的某個(gè)目標(biāo)來執(zhí)行某個(gè)任務(wù)

插件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 生命周期是maven的又一大核心,maven的生命周期是抽象的,而實(shí)際行為都是以插件的方式來完成的,下面我將對(duì)生命...
    小煉君閱讀 1,313評(píng)論 0 50
  • Maven的所有實(shí)際操作都是由插件完成的,如果沒有插件,Maven什么都不會(huì)干。(即時(shí)你沒有在POM中配置 元素,...
    Liam666閱讀 319評(píng)論 0 1
  • 一、生命周期和插件的關(guān)系maven的生命周期是為了對(duì)所有的構(gòu)建過程進(jìn)行抽象和統(tǒng)一,總結(jié)的一套高度完善的、易擴(kuò)展的生...
    lynnzhangcsh閱讀 292評(píng)論 0 0
  • 一、什么是生命周期 Maven的生命周期包括項(xiàng)目的清理、初始化、編譯、測(cè)試、打包、集成測(cè)試、驗(yàn)證、部署和站點(diǎn)生產(chǎn)等...
    JarvisTH閱讀 382評(píng)論 0 0
  • Maven的生命周期是對(duì)所有構(gòu)建過程的抽象和統(tǒng)一。包含了項(xiàng)目的清理、初始化、編譯、測(cè)試、打包、集成測(cè)試、驗(yàn)證、部署...
    洛楊凡閱讀 401評(píng)論 0 0

友情鏈接更多精彩內(nèi)容