什麼是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/#browse 。使用這個庫,開發人員可以在中央存儲庫中搜索所有可用的庫。
遠程倉庫
有時,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 停止處理並拋出錯誤(找不到依賴庫)。