依賴管理

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)程倉庫下載,并保存到本地倉庫

Maven倉庫

本地倉庫:默認(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)上搜索查詢:

http://search.maven.org

http://mvnrepository.com

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包),如圖:

image.png

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即可完成添加


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容