Maven儲存庫


什麼是Maven資源庫?

在 Maven 術語裡儲存庫是一個目錄,即目錄中儲存所有專案的 jar 庫,外掛或任何其他專案特定檔案,並可以容易由 Maven 使用

Maven庫中有三種型別

  • local - 本地庫

  • central - 中央庫

  • remote - 遠端庫

本地庫

Maven 本地儲存庫是一個在本地計算機上的一個檔案夾位置。當你第一次執行 maven 命令的時候它就被建立了

Maven 的本地資源庫讓您的專案可依賴這些專案(外掛庫 jar 檔案,jar檔案等)。當執行 Maven 構建,那麼 Maven 會自動下載所有依賴的jar到本地儲存庫中。它有助於避免依賴儲存在遠端機器上的專案建立參考。

Maven 本地儲存庫,預設情況下建立在 %USER_HOME% 目錄。要覆蓋預設位置,可在 Maven 的 settings.xml 檔案中修改 %M2_HOME%conf 目錄指向另一個路徑。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>C:/MyLocalRepository</localRepository>
</settings>

當執行 Maven 命令,Maven 會下載依賴到您的自定義路徑。

中央儲存庫

Maven中央儲存庫是由Maven社群提供的資源庫。它包含了大量的常用程式庫。

當Maven沒有在本地儲存庫找到任何依賴,就會開始搜尋在中央儲存庫,它會使用下列網址: http://repo1.maven.org/maven2/

中央倉庫的關鍵概念:

  • 此系統資訊庫由Maven社群管理

  • 它不要求組態

  • 搜尋時需要網際網路接入

要瀏覽中央 Maven 倉庫內容,Maven 社群提供了一個網址:http://search.maven.org/ 。使用這個庫,開發人員可以在中央儲存庫中搜尋所有可用的庫。

遠端倉庫

有時,Maven不能從依賴中央儲存庫找到上述庫,那麼它停下構建過程並輸出錯誤訊息到控制台。為了防止這種情況,Maven提供遠端倉庫概念,這是開發商的自定義庫包含所需的庫檔案或其他專案 jar 檔案。

例如,使用以下提到的 pom.xml,Maven 會從遠端倉庫下載依賴項(不在中央儲存庫中提供)。

<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>com.companyname.common-lib</groupId>
         <artifactId>common-lib</artifactId>
         <version>1.0.0</version>
      </dependency>
   <dependencies>
   <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
</project>

Maven 依賴搜尋序列

當我們執行 Maven 構建命令,Maven 依賴庫按以下順序進行搜尋:

  • 第1步 - 搜尋依賴本地資源庫,如果沒有找到,跳到第2步,否則,如果找到那麼會做進一步處理。

  • 第2步 - 搜尋依賴中央儲存庫,如果沒有找到,則從遠端資源庫/儲存庫中,然後移動到步驟4,否則如果找到,那麼它下載到本地儲存庫中,以備將來參考使用。

  • 第3步 - 如果沒有提到遠端倉庫,Maven 則會停止處理並丟擲錯誤(找不到依賴庫)。

  • 第4步 - 遠端倉庫或儲存庫中的搜尋依賴,如果找到它會下載到本地資源庫以供將來參考使用,否則 Maven 停止處理並丟擲錯誤(找不到依賴庫)。