天天看點

【Maven】Maven倉庫介紹(一)

  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倉庫隻分本地倉庫和遠端倉庫。而遠端倉庫又可分成中央倉庫,私服,第三方倉庫。

其圖解如下:

【Maven】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.降低中央倉庫的負荷