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)在我們在pom.xml文件中,添加servlet的jar包的坐標(biāo)如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
2、那么問題來了,在pom文件中添加的servlet的jar包坐標(biāo),添加的僅僅是一個(gè)jar包對應(yīng)的坐標(biāo),而這個(gè)jar包到底存放在哪里呢?
了解Maven管理jar包的規(guī)則之后,我們可以找到j(luò)ar包的存放位置是在倉庫(倉庫默認(rèn)是在:C:\Users{當(dāng)前用戶}.m2\repository)的: /javax/servlet/servlet-api/2.5/目錄下,例如:

3、可以看出,在Maven中,所有的jar包全都存放在本地倉庫的目錄中,如果項(xiàng)目中需要使用某一個(gè)jar包,直接在項(xiàng)目的pom.xml文件中通過坐標(biāo)(GroupID + ArtifactID + Version)引入指定位置的jar包即可。
4、這樣可以將項(xiàng)目中所有使用的jar包集中在一個(gè)目錄(本地倉庫)中統(tǒng)一進(jìn)行管理,而不是在每個(gè)項(xiàng)目中都拷貝一份。減少了項(xiàng)目體積,也節(jié)省了磁盤空間。
5、將來如果別人需要導(dǎo)入你的項(xiàng)目,只需要將項(xiàng)目(當(dāng)然包括pom.xml文件)代碼整體傳給對方,無需將jar包發(fā)送給對方,對方在配置Maven的環(huán)境后,導(dǎo)入你的項(xiàng)目,Maven會(huì)自動(dòng)根據(jù)pom.xml文件中配置的坐標(biāo),引入對應(yīng)的jar包。
1.1.2 依賴管理--jar包下載
如果引入的jar包在本地倉庫中沒有呢?
如果是剛配置的Maven環(huán)境,本地倉庫中還沒有太多jar包,此時(shí)在pom文件中通過坐標(biāo)引入jar包,而本地倉庫中沒有這個(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ì)到本地倉庫中尋找對應(yīng)的jar包(如果本地倉庫中有,則直接引用),如果本地倉庫中沒有將會(huì)從遠(yuǎn)程倉庫中下載對應(yīng)的jar包到本地倉庫中再使用
3、Maven在下載spring核心jar包的同時(shí),也會(huì)將核心jar包所依賴的jar包也下載下來。
在上面的演示中,pom.xml文件中引入了spring的核心jar包,maven在下載spring核心jar包的同時(shí),也會(huì)將spring核心jar包所依賴的相關(guān)jar包下載下來。
1.2 Maven倉庫
在上面所提到的本地倉庫、遠(yuǎn)程倉庫均是用來Maven用來更好的管理jar包的所采用的一種方式。下面來了解Maven的三種倉庫,以及三種倉庫之間的潛在聯(lián)系。
1.2.1 Maven的三種倉庫
通過maven構(gòu)建的項(xiàng)目,會(huì)通過項(xiàng)目中的pom.xml文件從遠(yuǎn)程倉庫下載,并保存到本地倉庫

本地倉庫:默認(rèn)的本地倉庫位置在:c:/${user.dir}/.m2/repository,其中${user.dir}表示windows下的用戶目錄。本地倉庫的作用是,用于保存(存儲(chǔ))從私服或者從中央倉庫下載下來的jar包(或插件)。當(dāng)項(xiàng)目中需要使用jar包和插件時(shí),優(yōu)先從本地倉庫查找。
如果本地倉庫中沒有所需的jar包,可以到私服或者到中央倉庫中下載后再保存到本地倉庫。
私服(Nexus):私服也叫做鏡像倉庫,私服一般由公司搭建并維護(hù)(也可以自己搭建)。比如阿里云私服服務(wù)器http://maven.aliyun.com/nexus/content/groups/public/
如果項(xiàng)目中使用到的jar包或者插件本地倉庫沒有,則可以到私服中下載,如果私服中有就直接將jar包保存到本地倉庫中;而如果私服中也沒有所需的jar包,就到公服上下載所需要的jar包,下載之后先在私服上保存一份,最后再保存到本地倉庫。
公服(中央倉庫):公服也叫做中央倉庫,在maven軟件中內(nèi)置一個(gè)遠(yuǎn)程倉庫地址(http://repo1.maven.org/maven2)它就是中央倉庫,服務(wù)于整個(gè)互聯(lián)網(wǎng),由Maven團(tuán)隊(duì)自己維護(hù),里面存儲(chǔ)了非常全的jar包,它包含了世界上大部分流行的開源項(xiàng)目的jar包。
那么我們在使用Maven構(gòu)建的Java項(xiàng)目,項(xiàng)目中所使用的jar包會(huì)來自哪里呢?
例如,通過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包在本地倉庫中的坐標(biāo)即可使用。如果本地倉庫沒有所需要的jar包,則會(huì)連接私服(需要提前配置)下載所需jar包到本地倉庫供項(xiàng)目使用。
2)如果私服上也沒有所需的jar包,則會(huì)連接中央倉庫下載所需要的jar包保存到私服,再將jar包從私服下載至本地倉庫,供項(xiàng)目使用。
3)如果沒有配置私服,則默認(rèn)連接中央倉庫下載所需要的jar包到本地倉庫中供項(xiàng)目使用
4)當(dāng)項(xiàng)目B也需要依賴第三方j(luò)ar包時(shí),先到本地倉庫中查找所需jar包,如果有則直接引用而無需再次下載,如果仍有部分jar包本地倉庫中沒有,則同上,即連接私服下載所需jar包到本地倉庫。若私服中也沒有所需jar包,則連接中央倉庫下載jar包到私服,再從私服下載jar包到本地倉庫中,供項(xiàng)目使用。
1.3 添加依賴
1.3.1 添加依賴:第一種方式
1、添加依賴的第一種方式:是直接在pom.xml文件中的<dependencies>標(biāo)簽內(nèi)部添加。例如:在pom.xml文件中添加如下配置,就可以將junit單元測試的jar包引入到項(xiàng)目中來了。
添加依賴:
<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)的??梢酝ㄟ^訪問如下網(wǎng)址,在互聯(lián)網(wǎng)上搜索查詢:
3、或者在公司鏡像倉庫中搜索查詢:
http://maven.aliyun.com/nexus
4、示例:添加spring的jar包的坐標(biāo)到項(xiàng)目中
(1)訪問上面其中的一個(gè)網(wǎng)址,在搜索框中搜索"spring"
(2)在搜索出來的內(nèi)容中,選擇所需要的版本并點(diǎn)擊版本,查看該版本的springjar包所對應(yīng)的坐標(biāo):
(3)將坐標(biāo)直接復(fù)制

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

1.3.2 添加依賴:第二種方式
1、添加依賴的第二種方式:是使用maven插件的索引功能快速添加jar包
如果本地倉庫中有我們需要的jar包,可以在項(xiàng)目中的pom.xml文件中空白處右鍵--> Maven --> Add Dependency在彈出的窗口中添加所需要的依賴(jar包),如圖:

2、添加依賴示例:添加spring的jar包的坐標(biāo)到項(xiàng)目中
(1)如果maven已經(jīng)重建過索引,則可以直接執(zhí)行第3步。若重建過索引,在 "Maven Repositories" 視圖窗口中可以看到如下內(nèi)容:


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

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

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

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

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