2. maven生命周期

轉(zhuǎn)載

我們在開發(fā)項目的時候,不斷地在編譯礁苗、測試爬凑、打包、部署等過程试伙,maven的生命周期就是對所有構(gòu)建過程抽象與統(tǒng)一嘁信,生命周期包含項目的清理、初始化疏叨、編譯潘靖、測試、打包蚤蔓、集成測試卦溢、驗證、部署昌粤、站點生成等幾乎所有的過程既绕。
Maven有三套相互獨立的生命周期,請注意這里說的是“三套”涮坐,而且“相互獨立”凄贩,初學(xué)者容易將Maven的生命周期看成一個整體,其實不然袱讹。這三套生命周期分別是:

  1. CleanLifecycle 在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作疲扎。
  2. DefaultLifecycle 構(gòu)建的核心部分昵时,編譯,測試椒丧,打包壹甥,部署等等。
  3. SiteLifecycle 生成項目報告壶熏,站點句柠,發(fā)布站點。

再次強(qiáng)調(diào)一下它們是相互獨立的棒假,可以僅僅調(diào)用clean來清理工作目錄溯职,僅僅調(diào)用site來生成站點。當(dāng)然也可以直接運行 mvn clean install site 運行所有這三套生命周期帽哑。
每套生命周期都由一組階段(Phase)組成谜酒,我們平時在命令行輸入的命令總會對應(yīng)于一個特定的階段。maven中所有的執(zhí)行動作(goal)都需要指明自己在這個過程中的執(zhí)行位置妻枕,然后maven執(zhí)行的時候僻族,就依照過程的發(fā)展依次調(diào)用這些goal進(jìn)行各種處理。這個也是maven的一個基本調(diào)度機(jī)制屡谐。
每套生命周期還可以細(xì)分成多個階段述么。

cleanLifecycle

Clean生命周期一共包含了三個階段:

  1. pre-clean 執(zhí)行一些需要在clean之前完成的工作
  2. clean 移除所有上一次構(gòu)建生成的文件
  3. post-clean 執(zhí)行一些需要在clean之后立刻完成的工作

命令mvn clean中的就是代表執(zhí)行上面的clean階段,在一個生命周期中康嘉,運行某個階段的時候碉输,它之前的所有階段都會被運行籽前,也就是說亭珍,mvn clean 等同于 mvn pre-clean clean ,如果我們運行mvn post-clean 枝哄,那么 pre-clean肄梨,clean 都會被運行。這是Maven很重要的一個規(guī)則挠锥,可以大大簡化命令行的輸入众羡。

DefaultLifecycle

Maven最重要就是的Default生命周期,也稱構(gòu)建生命周期蓖租,絕大部分工作都發(fā)生在這個生命周期中粱侣,每個階段的名稱與功能如下:

  1. validate 驗證項目是否正確,以及所有為了完整構(gòu)建必要的信息是否可用
  2. initialize 初始化構(gòu)建狀態(tài)蓖宦,比如設(shè)置屬性或者創(chuàng)建目錄
  3. generate-sources 生成所有需要包含在編譯過程中的源代碼
  4. process-sources 處理源代碼齐婴,比如過濾一些值
  5. generate-resources 生成所有需要包含在打包過程中的資源文件
  6. process-resources 復(fù)制并處理資源文件至目標(biāo)目錄,準(zhǔn)備打包
  7. compile 編譯項目的源代碼
  8. process-classes 后處理編譯生成的文件稠茂,例如對Java類進(jìn)行字節(jié)碼增強(qiáng)(bytecode enhancement)
  9. generate-test-sources 生成所有包含在測試編譯過程中的測試源碼
  10. process-test-sources 處理測試源碼柠偶,比如過濾一些值
  11. generate-test-resources 生成測試需要的資源文件
  12. process-test-resources 復(fù)制并處理測試資源文件至測試目標(biāo)目錄
  13. test-compile 編譯測試源碼至測試目標(biāo)目錄
  14. test 使用合適的單元測試框架運行測試。這些測試應(yīng)該不需要代碼被打包或發(fā)布
  15. prepare-package 在真正的打包之前,執(zhí)行一些準(zhǔn)備打包必要的操作
  16. package 將編譯好的代碼打包成可分發(fā)的格式诱担,如JAR毡证,WAR,或者EAR
  17. pre-integration-test 執(zhí)行一些在集成測試運行之前需要的動作蔫仙。如建立集成測試需要的環(huán)境
  18. integration-test 如果有必要的話料睛,處理包并發(fā)布至集成測試可以運行的環(huán)境
  19. post-integration-test 執(zhí)行一些在集成測試運行之后需要的動作。如清理集成測試環(huán)境摇邦。
  20. verify 執(zhí)行所有檢查秦效,驗證包是有效的,符合質(zhì)量規(guī)范
  21. install 安裝包至本地倉庫涎嚼,以備本地的其它項目作為依賴使用
  22. deploy 復(fù)制最終的包至遠(yuǎn)程倉庫阱州,共享給其它開發(fā)人員和項目(通常和一次正式的發(fā)布相關(guān))

可見,構(gòu)建生命周期被細(xì)分成了22個階段法梯,但是我們沒必要對每個階段都了如指掌苔货,經(jīng)常關(guān)聯(lián)使用的只有process-test-resources、test立哑、package夜惭、install、deploy等幾個階段而已铛绰。
一般來說诈茧,位置稍后的過程都會依賴于之前的過程。這也就是為什么我們運行mvn install 的時候捂掰,代碼會被編譯敢会,測試,打包这嚣。當(dāng)然鸥昏,maven同樣提供了配置文件,可以依照用戶要求姐帚,跳過某些階段吏垮。比如有時候希望跳過測試階段而直接install,因為單元測試如果有任何一條沒通過罐旗,maven就會終止后續(xù)的工作膳汪。

siteLifecycle

  1. pre-site 執(zhí)行一些需要在生成站點文檔之前完成的工作
  2. site 生成項目的站點文檔
  3. post-site 執(zhí)行一些需要在生成站點文檔之后完成的工作,并且為部署做準(zhǔn)備
  4. site-deploy 將生成的站點文檔部署到特定的服務(wù)器上

這里經(jīng)常用到的是site階段和site-deploy階段九秀,用以生成和發(fā)布Maven站點遗嗽,這是Maven相當(dāng)強(qiáng)大的功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颤霎,一起剝皮案震驚了整個濱河市媳谁,隨后出現(xiàn)的幾起案子涂滴,更是在濱河造成了極大的恐慌,老刑警劉巖晴音,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柔纵,死亡現(xiàn)場離奇詭異,居然都是意外死亡锤躁,警方通過查閱死者的電腦和手機(jī)搁料,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來系羞,“玉大人郭计,你說我怎么就攤上這事〗氛瘢” “怎么了昭伸?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長澎迎。 經(jīng)常有香客問我庐杨,道長,這世上最難降的妖魔是什么夹供? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任灵份,我火速辦了婚禮,結(jié)果婚禮上哮洽,老公的妹妹穿的比我還像新娘填渠。我一直安慰自己,他們只是感情好鸟辅,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布氛什。 她就那樣靜靜地躺著,像睡著了一般剔桨。 火紅的嫁衣襯著肌膚如雪屉更。 梳的紋絲不亂的頭發(fā)上徙融,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天洒缀,我揣著相機(jī)與錄音,去河邊找鬼欺冀。 笑死树绩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隐轩。 我是一名探鬼主播饺饭,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼职车!你這毒婦竟也來了瘫俊?” 一聲冷哼從身側(cè)響起鹊杖,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扛芽,沒想到半個月后骂蓖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡川尖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年登下,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叮喳。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡被芳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馍悟,到底是詐尸還是另有隱情畔濒,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布锣咒,位于F島的核電站篓冲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宠哄。R本人自食惡果不足惜壹将,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毛嫉。 院中可真熱鬧诽俯,春花似錦、人聲如沸承粤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辛臊。三九已至仙粱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彻舰,已是汗流浹背伐割。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留刃唤,地道東北人隔心。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像尚胞,于是被迫代替她去往敵國和親硬霍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

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

  • 所有項目的構(gòu)建都是有生命周期的笼裳,這個生命周期包括:項目清理唯卖、初始化粱玲、編譯、測試拜轨、打包密幔、集成測試、驗證撩轰、部署胯甩、站點生...
    zlcook閱讀 2,763評論 0 21
  • 當(dāng)前皆串,JVM生態(tài)圈主要的三大構(gòu)建工具: Apache Ant(帶著Ivy) Maven Gradle 對于剛開始接...
    清楓_小天閱讀 5,781評論 1 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理淹办,服務(wù)發(fā)現(xiàn),斷路器恶复,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 生命周期是maven的又一大核心谤牡,maven的生命周期是抽象的副硅,而實際行為都是以插件的方式來完成的,下面我將對生命...
    小煉君閱讀 1,201評論 0 50
  • Maven聚合模塊: 因為Maven是提倡模塊化編程的翅萤,所以會以多個工程分為多個模塊恐疲。如果所有的功能、模塊都寫在一...
    凱哥學(xué)堂閱讀 751評論 0 4