1. 程式人生 > 其它 >第二章 Maven-Repository儲存庫

第二章 Maven-Repository儲存庫

一、基本概念

Maven Repository/儲存庫,顧名思義是一個儲存JAR檔案的倉庫,Maven根據專案中pom.xml檔案中提供的jar包依賴資訊,從儲存庫中查詢並獲取需要的jar包。

Maven Repository有3種類型:
	# 1.Local Repository – 本地庫
	# 2.Central Repository – 中央庫
	# 3.Remote Repository – 遠端庫
	
Maven搜尋依賴項時,會按照:本地庫、中央庫和遠端庫的順序進行。
如果這些庫中沒找到依賴項,Maven將報錯。

二、Local Repository

Maven本地儲存庫是本機中的一個目錄。如果目錄不存在,執行maven時就會先建立它。預設情況下,maven本地儲存庫是%USER_HOME%/.m2目錄。

本地儲存庫目錄設定
可以通過修改settings.xml檔案來更改maven本地儲存庫的位置。

settings.xml檔案位於MAVEN_HOME/conf/settings中,例如:D:\opt\apache-maven-3.6.1-bin\apache-maven-3.6.1\conf\settings.xml。

1.settings.xml中的預設配置

...  
<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
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

...  
</settings> 

2.修改本地儲存庫路徑

...  
<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>d:/maven-local-repo</localRepository>  

...  
</settings>  

這樣,本地儲存庫的路徑就被修改為:d:/maven-local-repo

三、Central Repository

Maven中央庫主要放置公共jar包,是由apache maven社群建立的,中央庫的網址是http://repo1.maven.org/maven2,可以通過網址http://search.maven.org/#browse檢視有哪些公共jar包。

四、Remote Repository

Maven遠端庫也是位於網路上的儲存庫。例如一個公司可能有很多共享的jar包檔案,就可以搭建一個公司內部的遠端庫,供眾多開發人員使用;中央庫可以認為是一個特殊的遠端庫。

可以在pom.xml中配置遠端庫,新增下面內容到pom.xml中就配置了一個遠端庫:

  <repositories>
   <repository>
       <id>test.code</id>
       <url>http://maven.fddsse.com/maven2/lib</url>
   </repository>
 </repositories>


Maven官方網站mvnrepository.com可以查詢jar包及其相關資訊,例如下面是spring core jar包的maven依賴配置資訊,可以通過這些配置獲取spring core jar。

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.1.6.RELEASE</version>
</dependency>