依賴管理

1 依賴管理

1.1 依賴管理

1.1.1 依賴管理--即jar包管理

1矫废、在Maven創(chuàng)建的項(xiàng)目中,如果需要引用jar包,只需要在項(xiàng)目的pom.xml文件中添加jar包的坐標(biāo)(GroupID+ArtifactID+Version)即可將jar包引進(jìn)項(xiàng)目中,之后就可以在項(xiàng)目中使用所引入的jar包了朦乏。

例如,現(xiàn)在我們?cè)趐om.xml文件中氧骤,添加servlet的jar包的坐標(biāo)如下:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>

2呻疹、那么問(wèn)題來(lái)了,在pom文件中添加的servlet的jar包坐標(biāo)筹陵,添加的僅僅是一個(gè)jar包對(duì)應(yīng)的坐標(biāo)刽锤,而這個(gè)jar包到底存放在哪里呢?

了解Maven管理jar包的規(guī)則之后,我們可以找到j(luò)ar包的存放位置是在倉(cāng)庫(kù)(倉(cāng)庫(kù)默認(rèn)是在:C:\Users{當(dāng)前用戶}.m2\repository)的: /javax/servlet/servlet-api/2.5/目錄下朦佩,例如:

3并思、可以看出,在Maven中语稠,所有的jar包全都存放在本地倉(cāng)庫(kù)的目錄中宋彼,如果項(xiàng)目中需要使用某一個(gè)jar包弄砍,直接在項(xiàng)目的pom.xml文件中通過(guò)坐標(biāo)(GroupID + ArtifactID + Version)引入指定位置的jar包即可。

4输涕、這樣可以將項(xiàng)目中所有使用的jar包集中在一個(gè)目錄(本地倉(cāng)庫(kù))中統(tǒng)一進(jìn)行管理音婶,而不是在每個(gè)項(xiàng)目中都拷貝一份。減少了項(xiàng)目體積莱坎,也節(jié)省了磁盤(pán)空間衣式。

5、將來(lái)如果別人需要導(dǎo)入你的項(xiàng)目檐什,只需要將項(xiàng)目(當(dāng)然包括pom.xml文件)代碼整體傳給對(duì)方瞳收,無(wú)需將jar包發(fā)送給對(duì)方,對(duì)方在配置Maven的環(huán)境后厢汹,導(dǎo)入你的項(xiàng)目,Maven會(huì)自動(dòng)根據(jù)pom.xml文件中配置的坐標(biāo)谐宙,引入對(duì)應(yīng)的jar包烫葬。

1.1.2 依賴管理--jar包下載

如果引入的jar包在本地倉(cāng)庫(kù)中沒(méi)有呢?

如果是剛配置的Maven環(huán)境凡蜻,本地倉(cāng)庫(kù)中還沒(méi)有太多jar包搭综,此時(shí)在pom文件中通過(guò)坐標(biāo)引入jar包,而本地倉(cāng)庫(kù)中沒(méi)有這個(gè)jar包划栓,這時(shí)會(huì)怎么樣呢兑巾?

1、例如忠荞,在Maven項(xiàng)目的pom文件中添加spring框架的坐標(biāo):

<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.7.RELEASE</version>

2蒋歌、如果在pom.xml文件中添加了新的坐標(biāo),將會(huì)到本地倉(cāng)庫(kù)中尋找對(duì)應(yīng)的jar包(如果本地倉(cāng)庫(kù)中有委煤,則直接引用)堂油,如果本地倉(cāng)庫(kù)中沒(méi)有將會(huì)從遠(yuǎn)程倉(cāng)庫(kù)中下載對(duì)應(yīng)的jar包到本地倉(cāng)庫(kù)中再使用

3、Maven在下載spring核心jar包的同時(shí)碧绞,也會(huì)將核心jar包所依賴的jar包也下載下來(lái)府框。

在上面的演示中,pom.xml文件中引入了spring的核心jar包讥邻,maven在下載spring核心jar包的同時(shí)迫靖,也會(huì)將spring核心jar包所依賴的相關(guān)jar包下載下來(lái)。

1.2 Maven倉(cāng)庫(kù)

在上面所提到的本地倉(cāng)庫(kù)兴使、遠(yuǎn)程倉(cāng)庫(kù)均是用來(lái)Maven用來(lái)更好的管理jar包的所采用的一種方式系宜。下面來(lái)了解Maven的三種倉(cāng)庫(kù),以及三種倉(cāng)庫(kù)之間的潛在聯(lián)系发魄。

1.2.1 Maven的三種倉(cāng)庫(kù)

通過(guò)maven構(gòu)建的項(xiàng)目蜈首,會(huì)通過(guò)項(xiàng)目中的pom.xml文件從遠(yuǎn)程倉(cāng)庫(kù)下載,并保存到本地倉(cāng)庫(kù)

Maven倉(cāng)庫(kù)

本地倉(cāng)庫(kù):默認(rèn)的本地倉(cāng)庫(kù)位置在:c:/${user.dir}/.m2/repository,其中${user.dir}表示windows下的用戶目錄欢策。本地倉(cāng)庫(kù)的作用是吆寨,用于保存(存儲(chǔ))從私服或者從中央倉(cāng)庫(kù)下載下來(lái)的jar包(或插件)。當(dāng)項(xiàng)目中需要使用jar包和插件時(shí)踩寇,優(yōu)先從本地倉(cāng)庫(kù)查找啄清。

如果本地倉(cāng)庫(kù)中沒(méi)有所需的jar包,可以到私服或者到中央倉(cāng)庫(kù)中下載后再保存到本地倉(cāng)庫(kù)俺孙。

私服(Nexus):私服也叫做鏡像倉(cāng)庫(kù)辣卒,私服一般由公司搭建并維護(hù)(也可以自己搭建)。比如阿里云私服服務(wù)器http://maven.aliyun.com/nexus/content/groups/public/

如果項(xiàng)目中使用到的jar包或者插件本地倉(cāng)庫(kù)沒(méi)有睛榄,則可以到私服中下載荣茫,如果私服中有就直接將jar包保存到本地倉(cāng)庫(kù)中;而如果私服中也沒(méi)有所需的jar包场靴,就到公服上下載所需要的jar包啡莉,下載之后先在私服上保存一份,最后再保存到本地倉(cāng)庫(kù)旨剥。

公服(中央倉(cāng)庫(kù)):公服也叫做中央倉(cāng)庫(kù)咧欣,在maven軟件中內(nèi)置一個(gè)遠(yuǎn)程倉(cāng)庫(kù)地址(http://repo1.maven.org/maven2)它就是中央倉(cāng)庫(kù),服務(wù)于整個(gè)互聯(lián)網(wǎng)轨帜,由Maven團(tuán)隊(duì)自己維護(hù)魄咕,里面存儲(chǔ)了非常全的jar包,它包含了世界上大部分流行的開(kāi)源項(xiàng)目的jar包蚌父。

那么我們?cè)谑褂肕aven構(gòu)建的Java項(xiàng)目哮兰,項(xiàng)目中所使用的jar包會(huì)來(lái)自哪里呢?

例如苟弛,通過(guò)Maven先后構(gòu)建項(xiàng)目A和項(xiàng)目B奠蹬,在項(xiàng)目中都需要依賴第三方j(luò)ar包:

1)如果項(xiàng)目A中需要依賴第三方j(luò)ar包,只需要在項(xiàng)目下的pom文件中引入jar包在本地倉(cāng)庫(kù)中的坐標(biāo)即可使用嗡午。如果本地倉(cāng)庫(kù)沒(méi)有所需要的jar包囤躁,則會(huì)連接私服(需要提前配置)下載所需jar包到本地倉(cāng)庫(kù)供項(xiàng)目使用。

2)如果私服上也沒(méi)有所需的jar包荔睹,則會(huì)連接中央倉(cāng)庫(kù)下載所需要的jar包保存到私服狸演,再將jar包從私服下載至本地倉(cāng)庫(kù),供項(xiàng)目使用僻他。

3)如果沒(méi)有配置私服宵距,則默認(rèn)連接中央倉(cāng)庫(kù)下載所需要的jar包到本地倉(cāng)庫(kù)中供項(xiàng)目使用

4)當(dāng)項(xiàng)目B也需要依賴第三方j(luò)ar包時(shí),先到本地倉(cāng)庫(kù)中查找所需jar包吨拗,如果有則直接引用而無(wú)需再次下載满哪,如果仍有部分jar包本地倉(cāng)庫(kù)中沒(méi)有婿斥,則同上,即連接私服下載所需jar包到本地倉(cāng)庫(kù)哨鸭。若私服中也沒(méi)有所需jar包民宿,則連接中央倉(cāng)庫(kù)下載jar包到私服,再?gòu)乃椒螺djar包到本地倉(cāng)庫(kù)中像鸡,供項(xiàng)目使用活鹰。

1.3 添加依賴

1.3.1 添加依賴:第一種方式

1、添加依賴的第一種方式:是直接在pom.xml文件中的<dependencies>標(biāo)簽內(nèi)部添加只估。例如:在pom.xml文件中添加如下配置志群,就可以將junit單元測(cè)試的jar包引入到項(xiàng)目中來(lái)了。

添加依賴:

<dependencies>
  <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.9</version>
  <scope>test</scope>
 <dependency>
<dependencies>

2蛔钙、手動(dòng)添加依賴需要指定所依賴jar包的坐標(biāo)锌云,但是在大部分情況下,我們是不知道jar包的坐標(biāo)的吁脱∩O眩可以通過(guò)訪問(wèn)如下網(wǎng)址,在互聯(lián)網(wǎng)上搜索查詢:

http://search.maven.org

http://mvnrepository.com

3豫喧、或者在公司鏡像倉(cāng)庫(kù)中搜索查詢:
http://maven.aliyun.com/nexus

4、示例:添加spring的jar包的坐標(biāo)到項(xiàng)目中

(1)訪問(wèn)上面其中的一個(gè)網(wǎng)址幢泼,在搜索框中搜索"spring"

(2)在搜索出來(lái)的內(nèi)容中紧显,選擇所需要的版本并點(diǎn)擊版本,查看該版本的springjar包所對(duì)應(yīng)的坐標(biāo):

(3)將坐標(biāo)直接復(fù)制

5缕棵、將上圖中選中的坐標(biāo)拷貝到pom.xml文件中:

1.3.2 添加依賴:第二種方式

1孵班、添加依賴的第二種方式:是使用maven插件的索引功能快速添加jar包

如果本地倉(cāng)庫(kù)中有我們需要的jar包,可以在項(xiàng)目中的pom.xml文件中空白處右鍵--> Maven --> Add Dependency在彈出的窗口中添加所需要的依賴(jar包)招驴,如圖:

image.png

2篙程、添加依賴示例:添加spring的jar包的坐標(biāo)到項(xiàng)目中

(1)如果maven已經(jīng)重建過(guò)索引,則可以直接執(zhí)行第3步别厘。若重建過(guò)索引虱饿,在 "Maven Repositories" 視圖窗口中可以看到如下內(nèi)容:

(2)如果沒(méi)有重建索引,則執(zhí)行:window---> show view ---> other中搜索"maven"触趴,點(diǎn)擊下面的選框中的選項(xiàng):

在彈出的窗口中氮发,查看自己配置的本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)鏡像:

在本地倉(cāng)庫(kù)的選項(xiàng)上右鍵 "Rebuild Index" 即可重建索引:

(3)在項(xiàng)目中的pom.xml文件中右鍵 -> Maven -> Add Dependency,在彈出的窗口中輸入"spring":

選中要添加的jar包(坐標(biāo)會(huì)自動(dòng)填寫(xiě))冗懦,點(diǎn)擊OK即可完成添加


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爽冕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子披蕉,更是在濱河造成了極大的恐慌颈畸,老刑警劉巖乌奇,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異眯娱,居然都是意外死亡礁苗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)困乒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寂屏,“玉大人,你說(shuō)我怎么就攤上這事娜搂∏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵百宇,是天一觀的道長(zhǎng)考廉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)携御,這世上最難降的妖魔是什么昌粤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮啄刹,結(jié)果婚禮上涮坐,老公的妹妹穿的比我還像新娘。我一直安慰自己誓军,他們只是感情好袱讹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著昵时,像睡著了一般捷雕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壹甥,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天救巷,我揣著相機(jī)與錄音,去河邊找鬼句柠。 笑死浦译,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的溯职。 我是一名探鬼主播管怠,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缸榄!你這毒婦竟也來(lái)了渤弛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤甚带,失蹤者是張志新(化名)和其女友劉穎她肯,沒(méi)想到半個(gè)月后佳头,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晴氨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年康嘉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片籽前。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亭珍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枝哄,到底是詐尸還是另有隱情肄梨,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布挠锥,位于F島的核電站众羡,受9級(jí)特大地震影響策幼,放射性物質(zhì)發(fā)生泄漏淡诗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一侥祭、第九天 我趴在偏房一處隱蔽的房頂上張望蓖宦。 院中可真熱鬧齐婴,春花似錦、人聲如沸稠茂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)主慰。三九已至嚣州,卻和暖如春鲫售,著一層夾襖步出監(jiān)牢的瞬間共螺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工情竹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藐不,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓秦效,卻偏偏與公主長(zhǎng)得像雏蛮,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阱州,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • |-1-更新內(nèi)容[6.從倉(cāng)庫(kù)解析依賴的機(jī)制(重要)] 1Maven倉(cāng)庫(kù)作用 倉(cāng)庫(kù)用來(lái)存儲(chǔ)所有項(xiàng)目使用到構(gòu)件挑秉,在ma...
    zlcook閱讀 6,059評(píng)論 0 25
  • 簡(jiǎn)介 概述 Maven 是一個(gè)項(xiàng)目管理和整合工具 Maven 為開(kāi)發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,293評(píng)論 6 39
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)苔货,斷路器犀概,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 點(diǎn)開(kāi)了百度指數(shù)立哑。輸入了周大福。然后出來(lái)的都是搜索指數(shù)姻灶。其中铛绰,周大福在廣東的搜索指數(shù)排名第一。莎莎國(guó)際(00178-...
    金花花hhh閱讀 214評(píng)論 0 0
  • 表嫂先前在多個(gè)行業(yè)里面做銷售員,市場(chǎng)不景氣曾沈,店要么關(guān)門(mén)这嚣,要么裁員。最后進(jìn)了一家電器銷售門(mén)店晦譬,其公司的理念和制度相當(dāng)...
    撿到蜜罐的熊閱讀 173評(píng)論 0 0