<JavaWeb>Maven核心概念(二)

依賴管理,倉庫及構建生命周期


依賴配置

在之前的筆記中,我們詳細的給出了依賴聲明的語法規則,其中,最重要的,就是依賴坐標。
其中還有一個元素,<scope>,它表示的是依賴作用的范圍,常見的值有compile(默認),provided。

<scope>provided</scope>

compile:編譯時需要,打包時也會一并包含在內。
provided:僅編譯時需要。對于容器會提供的環境依賴文件,我們一般采用provided。
對于用于繼承的父pom來說,還有一個元素需要配置,那就是<dependencyMangment>,它包裹在<dependencies>標簽外。
那么我們的依賴項,會到哪里去尋找呢?

倉庫

Maven倉庫是一個用于統一存儲所有Maven項目共享構件的空間。
倉庫按照位置可以分為兩類:

  • 本地倉庫:用于緩存依賴。默認路徑為${user.home}/.m2/repository
  • 遠程倉庫:存放在服務器的倉庫,提供maven項目訪問并下載構件至本地倉庫。通過項目坐標,可以訪問到存放在遠程倉庫的依賴。
    已經緩存到本地的依賴,再次使用時可以直接調用,節約帶寬。訪問倉庫時,本地倉庫優先查找。

遠程倉庫按照作用不同,可以分為以下幾類:

  • 中央倉庫 The Central Repository,包含絕大部分開源項目。默認沒有任何配置的話,就會從中央倉庫查詢。
  • 其他公共倉庫 開源中國社區,一般提供了一個maven的鏡像庫,加速訪問。
  • 私服 如公司內部倉庫(artifactory),這樣對于一些私人項目,也可以托管到私服中。

遠程倉庫的配置:使用配置文件settings.xml或者在項目的pom.xml中為依賴指定<respositories>屬性,這樣配置,僅對設置的項目生效。

構建生命周期

一個構建生命周期是一組精心組織的有序的階段,每一個階段執行預先定義的"動作",比如:

  • 編譯
  • 打包
  • 部署
  • ...

這些動作會根據不同的項目類型,會自動的進行選擇。
Maven有三套獨立的互不干涉的生命周期:

  • clean -> pre-clean -> clean -> post-clean
    clean主要用來刪除項目構建的輸出,比如架包,class文件等。
mvn clean
  • defalut -> ... -> process-resources -> complie -> ... -> test -> package -> install -> deploy
mvn clean install//兩個生命周期
  • site -> pre-site -> site -> post-site -> site-deploy
    site生命周期主要用來生成站點文檔,主要用于開源項目,可以與java docker一起使用。
默認生命周期

default生命周期,是我們的項目構建過程中的整體模型,我們只關注寫出來的階段。

  • validate:檢測我們的項目配置是否正確,用來構建項目的信息是否完整。
  • process-resources:復制資源文件。
  • test:單元測試
  • package:打包成jar或者war
  • install:將包安裝到我們的本地倉庫,這樣在本地開發時,如果有別的項目依賴本項目,就可以直接查找了。
  • deploy:將war包上傳到遠程倉庫。
插件和目標

maven是一個插件式的架構,由一個很小的引擎,配上很多插件構成的。
所有的插件本身也是一個maven構建,由mavem倉庫進行管理。
maven的所有功能實際上都是由插件提供的。
每一個插件提供多個目標(Goal)。
調用目標的格式:

mvn <plugin>:<Goal>
插件目標綁定構建生命周期

插件在maven的生命周期中占據了很重要的地位,生命構建階段與目標綁定,當我們在調用maven生命周期時,實際上執行的是maven的插件目標。
用戶通過指定生命周期階段就能隱式的通過插件執行任務。
命令與目標的對應關系:

process-resources  resources:resources
compile  compiler:compile
test  surefire:test
install  install:install
deploy  deploy:deploy

對于package階段,會根據項目類型的不同,綁定到不同的目標之上。

插件配置

插件除了有定位的坐標外,還有一個<configuration>元素,用來配置插件。

<configuration>
    <source>1.6</source>
    <target>1.6</target>
    <encoding>UTF-8</encoding>
</configuration>

我們可以通過一個命令來查看插件支持的所有配置項:

mvn help:describe -Dplugin=<plugin_name> -Dgoal=<goal> -Ddetail

插件配置的具體內容,我們將會在下一份筆記中為大家展出~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容