一篇文章帶你了解Maven的生命周期
1、什么是 生命周期?
Maven 強大的原因是有一個十分完善的生命周期,生命周期可以理解為項目構(gòu)建步驟的集合,它定義了各個構(gòu)建環(huán)節(jié)的執(zhí)行順序,有了這個順序,Maven 就可以自動化的執(zhí)行構(gòu)建命令。
Maven的核心程序中定義了抽象的生命周期,生命周期中各個階段的具體任務(wù)是由插件來完成的。有三套相互獨立的生命周期,各個構(gòu)建環(huán)節(jié)執(zhí)行順序不能打亂,必須按照既定的正確順序來執(zhí)行。
- ①、Clean Lifecycle:在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作
- ②、Default Lifecycle:構(gòu)建的核心部分,編譯、測試、打包、安裝、部署等等。
- ③、Site Lifecycle:生成項目報告,站點,發(fā)布站點。
這三個都是相互獨立的。你可以僅僅調(diào)用 clean 來清理工作目錄,僅僅調(diào)用 site 來生成站點。當(dāng)然,也可以直接運行 mvn claen install site 運行所有這三套生命周期。下面我們分別來談?wù)勥@三個生命周期。
2、Clean Lifecycle:在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作
pre-clean 執(zhí)行一些需要在clean之前完成的工作 clean 移除所有上一次構(gòu)建生成的文件 post-clean 執(zhí)行一些需要在clean之后立刻完成的工作
我們前面講的執(zhí)行命令 mvn -clean,也就等同于 Clean 生命周期中的第一個階段 mvn pre-clean clean。注意有 Clean 聲明周期,而這個聲明周期中又有 clean 階段。
只要執(zhí)行后面的命令,那么前面的命令都會執(zhí)行,不需要再重新去輸入命令。
3、Default Lifecycle:構(gòu)建的核心部分,編譯、測試、打包、安裝、部署等等
validate generate-sources process-sources generate-resources process-resources 復(fù)制并處理資源文件,至目標(biāo)目錄,準(zhǔn)備打包。 compile 編譯項目的源代碼。 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 復(fù)制并處理資源文件,至目標(biāo)測試目錄。 test-compile 編譯測試源代碼。 process-test-classes test 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署。 prepare-package package 接受編譯好的代碼,打包成可發(fā)布的格式,如 JAR 。 pre-integration-test integration-test post-integration-test verify install 將包安裝至本地倉庫,以讓其它項目依賴。 deploy 將最終的包復(fù)制到遠(yuǎn)程的倉庫,以讓其它開發(fā)人員與項目共享。
這里我們強調(diào)一下:在maven中,只要在同一個生命周期,你執(zhí)行后面的階段,那么前面的階段也會被執(zhí)行,而且不需要額外去輸入前面的階段。
我們舉個例子:執(zhí)行 mven compile 命令,根據(jù)上面的聲明周期,它會默認(rèn)執(zhí)行前面五個個步驟也就是
validate generate-sources process-sources generate-resources process-resources 復(fù)制并處理資源文件,至目標(biāo)目錄,準(zhǔn)備打包。 compile 編譯項目的源代碼。
我們在 eclipse 中執(zhí)行 mvn compile 命令
看到紅色框的兩部分,第一個maven-compiler-plugin:2.6:resource
就是用來執(zhí)行前面幾個步驟的插件,第二個插件 maven-compiler-plugin:3.1:compile 則是用來執(zhí)行 mvn compile 的插件。這里我們提一下,mvn 的各個生命周期步驟都是依賴插件來完成的,后面我們會詳細(xì)講解 maven 插件。
4、Site Lifecycle:生成項目報告,站點,發(fā)布站點。
pre-site 執(zhí)行一些需要在生成站點文檔之前完成的工作 site 生成項目的站點文檔 post-site 執(zhí)行一些需要在生成站點文檔之后完成的工作,并且為部署做準(zhǔn)備 site-deploy 將生成的站點文檔部署到特定的服務(wù)器上
這里經(jīng)常用到的是 site 階段和 site-deploy 階段,用來生成和發(fā)布 maven 站點,這是 Maven 比較強大的功能,文檔及統(tǒng)計數(shù)據(jù)自動生成。由于現(xiàn)在的系統(tǒng)會有專門工具來生成文檔或報表。所以這個功能也是比較雞肋吧,不夠簡潔和美觀,用的不太多。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Spring Boot整合FTPClient線程池的實現(xiàn)示例
這篇文章主要介紹了Spring Boot整合FTPClient線程池的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12使用springboot跳轉(zhuǎn)到指定頁面和(重定向,請求轉(zhuǎn)發(fā)的實例)
這篇文章主要介紹了使用springboot跳轉(zhuǎn)到指定頁面和(重定向,請求轉(zhuǎn)發(fā)的實例),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12在SpringBoot項目中使用Java8函數(shù)式接口的方法示例
在Spring Boot項目中,Java 8 的函數(shù)式接口廣泛用于實現(xiàn)各種功能,如自定義配置、數(shù)據(jù)處理等,函數(shù)式接口在Spring Boot中非常有用,本文展示了在SpringBoot項目中使用Java8的函數(shù)式接口的方法示例,需要的朋友可以參考下2024-03-03java使用Socket類接收和發(fā)送數(shù)據(jù)
Socket類是負(fù)責(zé)處理客戶端通信的Java類。本文主要是介紹java使用Socket類接收和發(fā)送數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-10-10Java實現(xiàn)鏈表中元素的獲取、查詢和修改方法詳解
這篇文章主要介紹了Java實現(xiàn)鏈表中元素的獲取、查詢和修改方法,結(jié)合實例形式詳細(xì)分析了Java針對鏈表中元素的獲取、查詢和修改相關(guān)原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下2020-03-03SpringBoot整合阿里云OSS對象存儲服務(wù)實現(xiàn)文件上傳
這篇文章主要介紹了SpringBoot整合阿里云OSS對象存儲實現(xiàn)文件上傳,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下2021-04-04SpringBoot項目啟動時增加自定義Banner的簡單方法
最近看到springboot可以自定義啟動時的banner,然后自己試了一下,下面這篇文章主要給大家介紹了SpringBoot項目啟動時增加自定義Banner的簡單方法,需要的朋友可以參考下2022-01-01SpringBoot實現(xiàn)自定義注解用于文件驗證的詳細(xì)過程(大小、擴展名、MIME類型)
SpringBoot,Spring Cloud中經(jīng)常需要處理文件上傳的功能,為了確保上傳的文件滿足特定的要求(如擴展名、MIME類型和文件大小),我們可以創(chuàng)建一個自定義注解來簡化驗證過程,需要的朋友可以參考下2024-08-08