maven(一)生命周期

近期在學(xué)習(xí)java架構(gòu)相關(guān)課程,這里做些筆記滔驾,后期可以回顧用。

maven是每個(gè)程序員開(kāi)發(fā)必備的技能之一俄讹,但是很多時(shí)候都沒(méi)有系統(tǒng)的學(xué)過(guò)maven到底是個(gè)什么東西哆致,我也一樣,在之前的項(xiàng)目中唯一用到的就是pom.xml文件患膛。新建maven項(xiàng)目或者導(dǎo)入一個(gè)maven的工程摊阀,pom文件都是網(wǎng)上復(fù)制粘貼,至于里面到底有些什么踪蹬,每個(gè)標(biāo)簽都是干什么用的完全不知道胞此,現(xiàn)在開(kāi)始,一步步學(xué)習(xí)maven的原理以及更深層的東西延曙,使自己能夠更加熟練的掌握maven的使用豌鹤,并且可以在今后的工作中用到更多的maven相關(guān)的技術(shù)點(diǎn)。

maven有執(zhí)行命令枝缔,比如mvn clean package,mvn clean install,mvn clean deploy等布疙,那么這些命令道理是什么意思蚊惯,maven執(zhí)行的生命周期是什么,他在執(zhí)行的時(shí)候到底做了哪些工作灵临,下面就具體說(shuō)說(shuō)截型。

首先,maven的生命周期有三套儒溉,每套都是獨(dú)立完整的宦焦,分別是clean,default顿涣,site波闹。每套生命周期可以獨(dú)立運(yùn)行,而在每套生命周期中都存在很多的階段涛碑,當(dāng)每套生命周期執(zhí)行的時(shí)候精堕,其中每個(gè)階段順序執(zhí)行,當(dāng)每個(gè)階段完成之后即maven的該生命周期結(jié)束蒲障。而對(duì)應(yīng)每個(gè)階段歹篓,又有很多的插件來(lái)完成具體的功能,用一個(gè)流程表示就是:maven生命周期->phase(階段)->plugin?goal(插件)

下面聊聊每個(gè)生命周期下具體的階段都是什么揉阎。

1/clean生命周期包含的phase如下:

pre-clean:clean之前要做的事? ? ? ? ? ? ? ? ? ?

clean:clean

post-clean:clean之后要做的事

2/default生命周期包含的phase如下:

validate:校驗(yàn)這個(gè)項(xiàng)目的一些配置信息是否正確

initialize:初始化構(gòu)建狀態(tài)庄撮,比如設(shè)置一些屬性,或者創(chuàng)建一些目錄

generate-sources:自動(dòng)生成一些源代碼毙籽,然后包含在項(xiàng)目代碼中一起編譯

process-sources:處理源代碼洞斯,比如做一些占位符的替換

generate-resources:生成資源文件,才是干的時(shí)我說(shuō)的那些事情惧财,主要是去處理各種xml巡扇、properties那種配置文件扭仁,去做一些配置文件里面占位符的替換

process-resources:將資源文件拷貝到目標(biāo)目錄中垮衷,方便后面打包

compile:編譯項(xiàng)目的源代碼

process-classes:處理編譯后的代碼文件,比如對(duì)java class進(jìn)行字節(jié)碼增強(qiáng)

generate-test-sources:自動(dòng)化生成測(cè)試代碼

process-test-sources:處理測(cè)試代碼乖坠,比如過(guò)濾一些占位符

generate-test-resources:生成測(cè)試用的資源文件

process-test-resources:拷貝測(cè)試用的資源文件到目標(biāo)目錄中

test-compile:編譯測(cè)試代碼

process-test-classes:對(duì)編譯后的測(cè)試代碼進(jìn)行處理搀突,比如進(jìn)行字節(jié)碼增強(qiáng)

test:使用單元測(cè)試框架運(yùn)行測(cè)試

prepare-package:在打包之前進(jìn)行準(zhǔn)備工作,比如處理package的版本號(hào)

package:將代碼進(jìn)行打包熊泵,比如jar包

pre-integration-test:在集成測(cè)試之前進(jìn)行準(zhǔn)備工作仰迁,比如建立好需要的環(huán)境

integration-test:將package部署到一個(gè)環(huán)境中以運(yùn)行集成測(cè)試

post-integration-test:在集成測(cè)試之后執(zhí)行一些操作,比如清理測(cè)試環(huán)境

verify:對(duì)package進(jìn)行一些檢查來(lái)確保質(zhì)量過(guò)關(guān)

install:將package安裝到本地倉(cāng)庫(kù)中顽分,這樣開(kāi)發(fā)人員自己在本地就可以使用了

deploy:將package上傳到遠(yuǎn)程倉(cāng)庫(kù)中徐许,這樣公司內(nèi)其他開(kāi)發(fā)人員也可以使用了

3/site生命周期的phase:

pre-site:site之前要做的事

site:site

post-site:site之后要做的事

site-deploy

在maven的三套生命周期中,每個(gè)周期的階段中卒蘸,都默認(rèn)綁定了一些插件雌隅,而在執(zhí)行生命周期的時(shí)候翻默, 會(huì)順序執(zhí)行這些默認(rèn)綁定的插件。

default生命周期的默認(rèn)綁定是:

process-resources? ? ? ????????resources:resources

compile? ? ? ? ? ? ? ? ? ? ? ?????????compiler:compile

process-test-resources? ? ? ?resources:testResources

test-compile? ? ? ? ? ? ? ? ? ? ? ? compiler:testCompile

test? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?surefire:test

package? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jar:jar或者war:war

install? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?install:install

deploy? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?deploy:deploy

site生命周期的默認(rèn)綁定是:

site? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? site:site

site-deploy? ? ? ? ? ? ? ? ? ? ? ? site:deploy

clean生命周期的默認(rèn)

clean? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?clean:clean

類似于resources:resources這種格式恰起,說(shuō)的就是resources這個(gè)plugin的resources goal(resources功能修械,負(fù)責(zé)處理資源文件)

因此,maven執(zhí)行的命令語(yǔ)句比如mvn clean package

clean是指的clean生命周期中的clean phase

package是指的default生命周期中的package phase

此時(shí)就會(huì)執(zhí)行clean生命周期中检盼,在clean?phase之前的所有phase和clean phase肯污,pre clean,clean

同時(shí)會(huì)執(zhí)行default生命周期中吨枉,在package phase之前的所有phase和package phase


當(dāng)然蹦渣,在每套生命周期中,并不是只有上述的一些默認(rèn)綁定插件的phase貌亭,那些沒(méi)有寫(xiě)出來(lái)的是默認(rèn)沒(méi)有綁定的剂桥,在執(zhí)行的時(shí)候仍然會(huì)執(zhí)行,但是由于沒(méi)有綁定插件属提,所以即使執(zhí)行也什么事都不會(huì)做权逗。

而還有一些命令類似mvn dependency:tree,mvn deploy:deploy-file這樣的命令的意思是和直接執(zhí)行phase下對(duì)應(yīng)插件的命令冤议。

比如mvn dependency:tree意思就是直接執(zhí)行dependency插件下的tree這個(gè)goal斟薇。

以上就是maven生命周期的一些學(xué)習(xí)理解,后續(xù)會(huì)持續(xù)更新恕酸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末堪滨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蕊温,更是在濱河造成了極大的恐慌袱箱,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件义矛,死亡現(xiàn)場(chǎng)離奇詭異发笔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)凉翻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門了讨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人制轰,你說(shuō)我怎么就攤上這事前计。” “怎么了垃杖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵男杈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我调俘,道長(zhǎng)伶棒,這世上最難降的妖魔是什么泉瞻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮苞冯,結(jié)果婚禮上袖牙,老公的妹妹穿的比我還像新娘。我一直安慰自己舅锄,他們只是感情好鞭达,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著皇忿,像睡著了一般畴蹭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳍烁,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天叨襟,我揣著相機(jī)與錄音,去河邊找鬼幔荒。 笑死糊闽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爹梁。 我是一名探鬼主播右犹,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼姚垃!你這毒婦竟也來(lái)了念链?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤积糯,失蹤者是張志新(化名)和其女友劉穎掂墓,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體看成,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡君编,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绍昂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啦粹。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窘游,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跳纳,我是刑警寧澤忍饰,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站寺庄,受9級(jí)特大地震影響艾蓝,放射性物質(zhì)發(fā)生泄漏力崇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一赢织、第九天 我趴在偏房一處隱蔽的房頂上張望亮靴。 院中可真熱鬧,春花似錦于置、人聲如沸茧吊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)搓侄。三九已至,卻和暖如春话速,著一層夾襖步出監(jiān)牢的瞬間讶踪,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工泊交, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乳讥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓廓俭,卻偏偏與公主長(zhǎng)得像雏婶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子白指,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 所有項(xiàng)目的構(gòu)建都是有生命周期的留晚,這個(gè)生命周期包括:項(xiàng)目清理、初始化告嘲、編譯错维、測(cè)試、打包橄唬、集成測(cè)試赋焕、驗(yàn)證、部署仰楚、站點(diǎn)生...
    zlcook閱讀 2,776評(píng)論 0 21
  • 當(dāng)前,JVM生態(tài)圈主要的三大構(gòu)建工具: Apache Ant(帶著Ivy) Maven Gradle 對(duì)于剛開(kāi)始接...
    清楓_小天閱讀 5,801評(píng)論 1 13
  • 生命周期是maven的又一大核心,maven的生命周期是抽象的葬荷,而實(shí)際行為都是以插件的方式來(lái)完成的涨共,下面我將對(duì)生命...
    小煉君閱讀 1,211評(píng)論 0 50
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理纽帖,服務(wù)發(fā)現(xiàn),斷路器举反,智...
    卡卡羅2017閱讀 134,699評(píng)論 18 139
  • 泰國(guó)印象之泰菜 今年的泰國(guó)之行算起來(lái)應(yīng)該是第二次了懊直,之前跟團(tuán)去了曼谷和芭提雅,回來(lái)之后就只記得曼谷的burger ...
    黃桃果果閱讀 537評(píng)論 0 0