Maven 存儲庫
什麼是Maven資源庫?
在Maven術語裡存儲庫是一個地方,即目錄中所有項目的jar庫,插件或任何其他項目特定的器物保存,並可以容易地使用Maven。
Maven庫中有三種類型
-
local
-
central
-
remote
本地庫
Maven 本地存儲庫是一個在您的計算機上的文件夾位置。它被創建,當你第一次運行maven命令。
Maven的本地資源庫讓您的項目的所有依賴項(插件庫jar文件,jar文件等)。當你運行Maven構建,那麼Maven的自動下載到本地存儲庫中的所有依賴的jar。它有助於避免依賴存儲在遠程機器上每一個項目時,建立的參考。
Maven 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會下載依賴項(不提供中央存儲庫)中提到的相同的pom.xml從遠程倉庫。
<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的依賴庫按以下順序開始尋找:
-
Step 1 - 搜索依賴本地資源庫,如果冇有找到,移動到第2步,否則,如果發現然後做進一步處理。
-
Step 2 - 搜索依賴中央存儲庫中,如果冇有找到,遠程資源庫/存儲庫/被提及,然後移動到步驟4,否則,如果找到,那麼它下載到本地存儲庫中,以備將來參考。
-
Step 3 - 如果冇有提到遠程倉庫,Maven的隻是停止處理並拋出錯誤(找不到的依賴)。
-
Step 4 - 遠程倉庫或儲存庫中的搜索依賴,如果發現它下載到本地資源庫以供將來參考,否則Maven的預期停止處理並拋出錯誤(找不到的依賴)。