(VII)Maven生命周期

概述
Maven出現(xiàn)以前,項目構(gòu)建的生命周期就已經(jīng)存在了。軟件開發(fā)人員每天都在對項目進行清理鸟辅、編譯、測試及部署莺葫,而且往往使用不同的方式做類似的工作匪凉。Maven生命周期對所有的構(gòu)建過程進行抽象和統(tǒng)一,總結(jié)了一套高度完善、易擴展的生命周期。包含了項目的清理伦泥、初始化、編譯琐簇、測試、打包、集成測試、驗證蛋济、部署、站點生成等幾乎所有的構(gòu)建步驟炮叶。

敲黑板瘫俊,劃重點啦!
Maven生命周期是抽象的悴灵,本身不做任何實際工作,實際任務都交由插件完成骂蓖。
這種思想類似于設計模式中的模版方法模式(在父類中定義算法的整體結(jié)構(gòu)积瞒,子類可以通過實現(xiàn)或者重寫父類的方法來控制實際的行為)。

1.三套生命周期
Maven擁有三套相互獨立的生命周期登下,分別是clean(清理項目)茫孔,default(構(gòu)建項目)和site(建立項目站點)叮喳。僅調(diào)用某套生命周期的某階段不會對其他生命周期產(chǎn)生影響。每個生命周期都包含多個有序的階段(phase)缰贝,并且后面的階段依賴于前面的階段馍悟。Maven生命周期文檔鏈接

  • Clean Lifecycle,目的是清理項目剩晴,包含三個階段:
    pre-clean 執(zhí)行清理前需要完成的工作
    clean 清理上一次構(gòu)建生成的所有文件
    post-clean 完成清理后需要完成的工作

  • Default Lifecycle锣咒,目的是構(gòu)建項目,生命周期中最核心的部分:
    validate 驗證項目是否正確及是否提供必要信息赞弥。
    initialize 初始化構(gòu)建狀態(tài)毅整,例如設置屬性或創(chuàng)建目錄。
    generate-sources 生成所有包含在編譯中的源代碼绽左。
    Δ process-sources 處理項目主資源文件悼嫉。對src/main/resources目錄的內(nèi)容進行變量替換等工作后,復制到項目輸出的主classpath目錄中拼窥。
    generate-resources 生成包含在包中的資源
    process-resources 將資源復制并處理到目標目錄中戏蔑,為打包做準備。
    Δ compile 編譯項目的主源碼鲁纠。編譯src/main/resources目錄下的java文件至項目輸出的主classpath目錄中总棵。
    process-classes 處理編譯后的class文件。
    generate-test-sources 生成所有包含在編譯中的測試代碼房交。
    Δ process-test-sources 處理項目測試源文件彻舰。對src/test/resources目錄的內(nèi)容進行變量替換等工作后,復制到項目輸出的測試classpath目錄中候味。
    generate-test-resources 創(chuàng)建測試資源刃唤。
    process-test-resources 將資源復制并處理到目標目錄中。
    Δ test-compile 編譯項目的測試代碼白群。編譯src/test/resources目錄下的java文件至項目輸出的測試classpath目錄中尚胞。
    process-test-classes 處理測試代碼編譯后的class文件。
    Δ test 使用單元測試框架運行測試帜慢。測試代碼不會被打包或部署笼裳。
    prepare-package 打包前要做的準備工作。比如粱玲,解壓縮躬柬,處理版本。
    Δ package 接受編譯好的代碼抽减,打包成可發(fā)布的格式允青。
    pre-integration-test 在集成測試執(zhí)行之前所需的操作。比如卵沉,設置環(huán)境等颠锉。
    integration-test 如果需要法牲,可將程序包處理并部署到可運行集成測試的環(huán)境中。
    post-integration-test 完成集成測試后所需的操作琼掠。比如拒垃,清理環(huán)境等。
    verify 運行所有檢查來驗證包是否有效及是否符合質(zhì)量標準瓷蛙。
    Δ install 將包安裝到Maven本地倉庫悼瓮,供本地其他Maven項目使用
    Δ deploy 將最終的包復制到遠程倉庫,供其他開發(fā)人員和Maven項目使用速挑。

  • Site Lifecycle 目的是建立和發(fā)布項目站點谤牡,Maven可以基于POM包含的信息,自動生成一個站點姥宝,方便團隊交流和發(fā)布項目信息翅萤。該生命周期包含以下階段:
    pre-site 執(zhí)行一些在生成項目站點之前需要完成的工作
    site 生成項目站點文檔
    post-site 完成生成項目站點后需要完成的工作
    site-deploy 將生成的項目站點發(fā)布到服務器上。

2.命令行

mvn clean

調(diào)用clean生命周期的clean階段腊满。實際執(zhí)行的階段為clean生命周期的pre-clean和clean階段套么。

mvn test

調(diào)用default生命周期的test階段。實際執(zhí)行的階段為default生命周期的validate碳蛋、initialize等胚泌, test及其之前的所有階段。

mvn clean install

調(diào)用clean生命周期的clean階段和default生命周期的install階段肃弟。實際執(zhí)行的階段為clean生命周期的pre-clean和clean階段玷室,default生命周期的install及其之前的所有階段。

mvn clean deploy site-deploy

調(diào)用clean生命周期的clean階段和default生命周期的install階段笤受。實際執(zhí)行的階段為clean生命周期的pre-clean和clean階段穷缤,default生命周期的所有階段,site生命周期的所有階段箩兽。


所有的Maven生命周期定義 我們可以去查看$M2_HOME$\lib\maven-core-3.3.9\META-INF\plexus\下的componenets.xml津肛,例如Default生命周期階段定義:

<component>
  <role>org.apache.maven.lifecycle.Lifecycle</role>
  <implementation>org.apache.maven.lifecycle.Lifecycle</implementation>
  <role-hint>default</role-hint>
  <configuration>
    <id>default</id>
    
    <phases>
      <phase>validate</phase>
      <phase>initialize</phase>
      <phase>generate-sources</phase>
      <phase>process-sources</phase>
      <phase>generate-resources</phase>
      <phase>process-resources</phase>
      <phase>compile</phase>
      <phase>process-classes</phase>
      <phase>generate-test-sources</phase>
      <phase>process-test-sources</phase>
      <phase>generate-test-resources</phase>
      <phase>process-test-resources</phase>
      <phase>test-compile</phase>
      <phase>process-test-classes</phase>
      <phase>test</phase>
      <phase>prepare-package</phase>
      <phase>package</phase>
      <phase>pre-integration-test</phase>
      <phase>integration-test</phase>
      <phase>post-integration-test</phase>
      <phase>verify</phase>
      <phase>install</phase>
      <phase>deploy</phase>
    </phases>
    
  </configuration>
</component>

接下來進入Maven插件的學習


——《Maven實戰(zhàn)》學習筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汗贫,一起剝皮案震驚了整個濱河市身坐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌落包,老刑警劉巖部蛇,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咐蝇,居然都是意外死亡搪花,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撮竿,“玉大人,你說我怎么就攤上這事笔呀〈碧ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵许师,是天一觀的道長房蝉。 經(jīng)常有香客問我,道長微渠,這世上最難降的妖魔是什么搭幻? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮逞盆,結(jié)果婚禮上檀蹋,老公的妹妹穿的比我還像新娘。我一直安慰自己云芦,他們只是感情好俯逾,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舅逸,像睡著了一般桌肴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琉历,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天坠七,我揣著相機與錄音,去河邊找鬼旗笔。 笑死彪置,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的换团。 我是一名探鬼主播悉稠,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艘包!你這毒婦竟也來了的猛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤想虎,失蹤者是張志新(化名)和其女友劉穎卦尊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舌厨,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡岂却,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躏哩。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡署浩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扫尺,到底是詐尸還是另有隱情筋栋,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布正驻,位于F島的核電站弊攘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏姑曙。R本人自食惡果不足惜襟交,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伤靠。 院中可真熱鬧捣域,春花似錦、人聲如沸醋界。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽形纺。三九已至丘侠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逐样,已是汗流浹背蜗字。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脂新,地道東北人挪捕。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像争便,于是被迫代替她去往敵國和親级零。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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

  • 所有項目的構(gòu)建都是有生命周期的滞乙,這個生命周期包括:項目清理奏纪、初始化、編譯斩启、測試序调、打包、集成測試兔簇、驗證发绢、部署硬耍、站點生...
    zlcook閱讀 2,777評論 0 21
  • 當前甚纲,JVM生態(tài)圈主要的三大構(gòu)建工具: Apache Ant(帶著Ivy) Maven Gradle 對于剛開始接...
    清楓_小天閱讀 5,801評論 1 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理口锭,服務發(fā)現(xiàn),斷路器介杆,智...
    卡卡羅2017閱讀 134,711評論 18 139
  • 簡介 概述 Maven 是一個項目管理和整合工具 Maven 為開發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,307評論 6 39
  • 摩卡不要咖啡只要奶泡 《太陽的后裔》的標簽是: 一春哨、情節(jié)不拖沓 二、男主角撩妹恩伺,女主角也會撩漢 三赴背、勢均力敵的戀愛...
    劉潞潞Lumia閱讀 1,210評論 9 8