Maven倉庫:
1.在某個位置統一存儲所有Maven項目共享的構件,而實際的Maven項目中則不再各自存儲依賴檔案。
2.隻需在pom檔案中聲明所需要的依賴,然後在需要依賴的時候(例如:測試,編譯的時候引入這些依賴)即可。
3.而在打包的時候,maven檔案會将這些依賴打包到包中,保證運作時不會出現依賴缺失的情況。
倉庫布局:
倉庫是基于簡單檔案系統進行管理,其在系統的路徑遵循:groupId/artifactId/version/artifactId-version.packaging
如log4j該依賴,其坐标為log4j:log4j:1.2.15,其檔案路徑為:log4j/log4j/1.2.15/log4j-1.2.15.jar
注:根據這個原理,如果我們無法獲得某個依賴時,可以在本地倉庫中檢查指定的路徑的依賴是否存在,如果不存在,則需要确定是否有其他版本可用等等
倉庫的分類:
Maven倉庫隻分本地倉庫和遠端倉庫。而遠端倉庫又可分成中央倉庫,私服,第三方倉庫。
其圖解如下:

依賴尋找流程:
1.在本地倉庫中,根據Maven坐标系尋找指定依賴,如果存在,直接傳回
2.如果Maven倉庫中不存在,或者需要檢查依賴的版本時,maven則會去遠端倉庫中尋找,下載下傳到本地倉庫中再使用
本地倉庫
配置:
在setting檔案中,增加localRepository元素進行設定,格式如下:
<settings>
<localRepository>D:\xxx\xxx</localRepository>
</settings>
将某個子產品編譯打包,釋出到本地倉庫中,提供給其他項目使用:
在項目中采用mvn clean install指令進行安裝,将子產品安裝到Maven本地倉庫中
中央倉庫
中央倉庫是Maven配置檔案中預設的倉庫位址,如果使用者沒有修改倉庫配置,那麼Maven預設會從中央倉庫下載下傳依賴。
其在超級POM檔案中的配置如下:
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enable>false</enable>
</snapshots>
</repository>
</repositories>
其中,id指明了他是中央倉庫,name用來表示該倉庫。url是該倉庫位址,layout使用的是預設的倉庫布局(該布局和上面提到的檔案路徑一樣,這裡不深入研究倉庫布局),snapshots表示是從倉庫中下載下傳snapshot依賴的相關配置。enable為false表示不會從該倉庫下載下傳快照版本的依賴
私服:
私服是一種特殊的遠端倉庫,其内容是來自于其他的遠端倉庫,一般架設在區域網路内,提供給一個組織的人員使用。當Maven需要下載下傳依賴時,從私服請求,如果私服上不存在該依賴,則從其他遠端倉庫下載下傳,同時緩存在私服上,提供給其他人使用。如果項目中的一些内部子產品,無法釋出到外部遠端倉庫中,也可釋出在私服上,提供給項目中的其他人員使用。
優勢:
1.節省外網帶寬
2.加速Maven建構
3.部署第三方構件
4.提供穩定性,增強控制
5.降低中央倉庫的負荷