Maven相關

一扫倡、概述

Maven 是一個項目管理和整合工具渔嚷。Maven 為開發(fā)者提供了一套完整的構建生命周期框架叹俏。開發(fā)團隊幾乎不用花多少時間就能夠自動完成工程的基礎構建配置舞肆,因為 Maven 使用了一個標準的目錄結(jié)構和一個默認的構建生命周期肩袍。

在有多個開發(fā)團隊環(huán)境的情況下厂僧,Maven 能夠在很短的時間內(nèi)使得每項工作都按照標準進行。因為大部分的工程配置操作都非常簡單并且可復用了牛,在創(chuàng)建報告颜屠、檢查、構建和測試自動配置時鹰祸,Maven 可以讓開發(fā)者的工作變得更簡單甫窟。

二、構建生命周期

構建生命周期是一組階段的序列(sequence of phases)蛙婴,每個階段定義了目標被執(zhí)行的順序粗井。這里的階段是生命周期的一部分。當需要在某個特定階段之前或之后執(zhí)行目標時,可以使用 pre 和 post 來定義這個目標浇衬。當 Maven 開始構建工程懒构,會按照所定義的階段序列的順序執(zhí)行每個階段注冊的目標。

Maven 有以下三個標準的生命周期:

  • clean
  • default(or build)
  • site

1. Clean生命周期

Clean的主要目的是清空項目工作中產(chǎn)生的一些中間件耘擂,比如上次打的jar包胆剧,臨時文件等。該生命周期主要用于在build生命周期之前做清理工作醉冤。它包含以下階段:

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

2. Default (or Build) 生命周期

這是 Maven 的主要生命周期秩霍,被用于構建應用,主要有23個階段蚁阳,下面主要介紹常用的幾種:

階段 處理 描述
validate 驗證項目 驗證項目是否正確且所有必須信息是可用的
compile 執(zhí)行編譯 源代碼編譯在此階段完成
Test 測試 使用適當?shù)膯卧獪y試框架運行測試铃绒。
package 打包 將編譯后的代碼打包成需要的格式,比如JAR
verify 檢查 對集成測試的結(jié)果進行檢查螺捐,以保證質(zhì)量達標
install 安裝 安裝打包的項目到本地倉庫颠悬,以供其他項目使用
deploy 部署 將在最終的build環(huán)境上面完成,拷貝最終的工程包到遠程倉庫中定血,以共享給其他開發(fā)人員和工程

3. Site生命周期

Maven Site 插件一般用來創(chuàng)建新的報告文檔椿疗、部署站點等。

  • pre-site:執(zhí)行一些需要在生成站點文檔之前完成的工作
  • site:生成項目的站點文檔
  • post-site: 執(zhí)行一些需要在生成站點文檔之后完成的工作糠悼,并且為部署做準備
  • site-deploy:將生成的站點文檔部署到特定的服務器上

這里經(jīng)常用到的是site階段和site-deploy階段,用以生成和發(fā)布Maven站點浅乔。

三倔喂、配置文件

構建配置文件是一系列的配置項的值,可以用來設置或者覆蓋 Maven 構建默認值靖苇。使用構建配置文件席噩,可以為不同的環(huán)境,比如說生產(chǎn)環(huán)境(Producation)和開發(fā)(Development)環(huán)境贤壁,定制構建方式悼枢。

配置文件在 pom.xml 文件中使用 activeProfiles 或者 profiles 元素指定,并且可以通過各種方式觸發(fā)脾拆。配置文件在構建時修改 POM馒索,并且用來給參數(shù)設定不同的目標環(huán)境(比如說,開發(fā)(Development)名船、測試(Testing)和生產(chǎn)環(huán)境(Producation)中數(shù)據(jù)庫服務器的地址)绰上。

構建配置文件大體上有三種類型:

類型 在哪定義
項目級(Per Project) 定義在項目的POM文件pom.xml中
用戶級 (Per User) 定義在Maven的設置xml文件中 (%USER_HOME%/.m2/settings.xml)
全局(Global) 定義在 Maven 全局的設置 xml 文件中 (%M2_HOME%/conf/settings.xml)

POM配置

在項目的根目錄下面有個pom.xml的文件,該文件是用來配置Maven項目的渠驼,其中包括版本蜈块,生命周期,構建過程,依賴等的配置百揭。POM( Project Object Model爽哎,項目對象模型 ) 是 Maven 工程的基本工作單元,是一個XML文件器一,包含了項目的基本信息课锌,用于描述項目如何構建,聲明項目依賴盹舞,等等产镐。執(zhí)行任務或目標時,Maven 會在當前目錄中查找 POM踢步。它讀取 POM癣亚,獲取所需的配置信息,然后執(zhí)行目標获印。

POM.xml 的根元素是 project述雾,它有三個主要的子節(jié)點:groupId,artifactId兼丰,version玻孟。

節(jié)點 描述
project 工程的根標簽。
groupId 是項目組織中唯一的標識符鳍征,對應Java包結(jié)構黍翎,在idea中看到的是main目錄里java的目錄結(jié)構。一般分為多個段艳丛,這里我只說兩段匣掸,第一段為域,第二段為公司名稱氮双。域又分為org碰酝、com、cn等等許多戴差,其中org為非營利組織送爸,com為商業(yè)組織。
artifactId 是項目的唯一的標識符暖释,實際對應項目的名稱(就是idea中工程的名字)袭厂,就是項目根目錄的名稱。
version 是該項目的版本信息球匕。

四嵌器、倉庫

在Maven中,倉庫就是用來存放依賴文件的地方谐丢,是依賴管理的重要組成部分爽航。倉庫按照存放位置可以分為本地倉庫蚓让,遠程倉庫以及中央倉庫。

1. 本地倉庫

本地倉庫就是本地開發(fā)自己機器上的倉庫讥珍。Maven 本地倉庫是機器上的一個文件夾历极。它在第一次運行任何 maven 命令的時候創(chuàng)建。

Maven 本地倉庫保存你的工程的所有依賴(library jar衷佃、plugin jar 等)趟卸。當你運行一次 Maven 構建,Maven 會自動下載所有依賴的 jar 文件到本地倉庫中氏义。它避免了每次構建時都引用存放在遠程機器上的依賴文件锄列。
Maven 本地倉庫默認被創(chuàng)建在 %USER_HOME% 目錄下。要修改默認位置惯悠,在 %M2_HOME%\conf 目錄中的 Maven 的 settings.xml 文件中定義另一個路徑邻邮。

2. 中央倉庫

Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫,其中包含了大量常用的庫克婶。

中央倉庫包含了絕大多數(shù)流行的開源Java構件筒严,以及源碼、作者信息情萤、SCM鸭蛙、信息、許可證信息等筋岛。一般來說娶视,簡單的Java項目依賴的構件都可以在這里下載到。

中央倉庫的關鍵概念:

  • 這個倉庫由 Maven 社區(qū)管理睁宰。
  • 不需要配置肪获。
  • 需要通過網(wǎng)絡才能訪問。

3. 遠程倉庫

有時候勋陪,我們可能沒有網(wǎng)絡或者網(wǎng)絡由于條件約束,不允許在中央倉庫下載依賴硫兰,那么組織可以自己定制一個遠程倉庫诅愚,讓所有開發(fā)都從此倉庫下載。我們定義好了遠程倉庫劫映,然后修改POM文件即可违孝。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泳赋,隨后出現(xiàn)的幾起案子雌桑,更是在濱河造成了極大的恐慌,老刑警劉巖祖今,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件校坑,死亡現(xiàn)場離奇詭異拣技,居然都是意外死亡,警方通過查閱死者的電腦和手機耍目,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門膏斤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人邪驮,你說我怎么就攤上這事莫辨。” “怎么了毅访?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵沮榜,是天一觀的道長。 經(jīng)常有香客問我喻粹,道長蟆融,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任磷斧,我火速辦了婚禮振愿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弛饭。我一直安慰自己冕末,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布侣颂。 她就那樣靜靜地躺著档桃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪憔晒。 梳的紋絲不亂的頭發(fā)上藻肄,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音拒担,去河邊找鬼嘹屯。 笑死,一個胖子當著我的面吹牛从撼,可吹牛的內(nèi)容都是我干的州弟。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼低零,長吁一口氣:“原來是場噩夢啊……” “哼婆翔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掏婶,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤啃奴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雄妥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體最蕾,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡依溯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了揖膜。 大學時的朋友給我發(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
  • 我被黑心中介騙來泰國打工脑题, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留件缸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓叔遂,卻偏偏與公主長得像他炊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掏熬,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

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

  • Maven 相關概念總結(jié) 構建原理 Maven 構建項目的規(guī)則是約定大于配置佑稠,約定指 Maven 提倡項目應遵循標...
    FoxLayla閱讀 218評論 0 0
  • 參考資料: http://ifeve.com/maven-1/ http://ifeve.com/maven-2/...
    這個該叫什么呢閱讀 526評論 0 1
  • Maven的基本了解 什么是Maven秒梅? Maven就是Apache下的一個開源項目旗芬。它是用純java開發(fā)的。是一...
    Bcome閱讀 2,795評論 0 7
  • 本文初衷 Maven 整理自己腦袋中捆蜀、收藏中的那些資料疮丛,來一次清空幔嫂,讓自己重新開始。 整理這篇的起點是本人已經(jīng)會使...
    UPUPMO閱讀 6,092評論 8 198
  • 在很久很久以前誊薄,有兩只彼此有好感的小老鼠履恩,但是相互間從不表露自己內(nèi)心的情感……一次,他們結(jié)伴去覓食呢蔫,在一次機遇...
    愛吃饅頭的旎閱讀 217評論 0 0