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ù)
本地倉(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)上搜索查詢:
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包)招驴,如圖:
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即可完成添加