在 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 依賴庫按以下順序進行搜尋:
第1步 - 搜尋依賴本地資源庫,如果沒有找到,跳到第2步,否則,如果找到那麼會做進一步處理。
第2步 - 搜尋依賴中央儲存庫,如果沒有找到,則從遠端資源庫/儲存庫中,然後移動到步驟4,否則如果找到,那麼它下載到本地儲存庫中,以備將來參考使用。
第3步 - 如果沒有提到遠端倉庫,Maven 則會停止處理並丟擲錯誤(找不到依賴庫)。
第4步 - 遠端倉庫或儲存庫中的搜尋依賴,如果找到它會下載到本地資源庫以供將來參考使用,否則 Maven 停止處理並丟擲錯誤(找不到依賴庫)。