1. 程式人生 > >Maven學習總結(18)——深入理解Maven倉庫

Maven學習總結(18)——深入理解Maven倉庫

一.本地倉庫(Local Repository)

本地倉庫就是一個本機的目錄,這個目錄被用來儲存我們專案的所有依賴(外掛的jar包還有一些其他的檔案),簡單的說,當你build一個Maven專案的時候,所有的依賴檔案都會放在本地倉庫裡,倉庫供所有專案都可以使用

預設情況下,本地倉庫在.m2目錄,windows下的話就是你的使用者名稱目錄下的.m2目錄

1.更新本地倉庫目錄

找到你的MAVEN_HOME目錄下的conf/setting.xml檔案,更新localRepository節點

<settings><!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
<localRepository>D:/maven/repo</localRepository>

 2.儲存一下

完成了。新的本地倉庫被放在了D:/maven/repo

看一下這個目錄

 二.中央倉庫(central repository)

當我們build一個Maven專案的時候,Maven會檢查我們的pom.xml檔案,來定義專案的依賴,然後Maven會在本地倉庫裡查詢,如果沒有找到,就去maven的中央庫去下載,地址是

看起來是這樣的

注意啊,雖然這個是新的中央倉庫,但有時候還是會從http://repo1.maven.org/maven/這個舊倉庫下載東西,不過不要緊,理解就行了

三.遠端倉庫(Remote Respository)

在Maven中,當你在pom.xml中生命的依賴既不在本地庫,也不在中央庫的時候,就會報錯。

1.例子

org.jvnet.localizer這個包僅在java.net的倉庫裡有(以前是,現在中央倉庫也有了。但理解就行)

<dependency><groupId>org.jvnet.localizer</groupId><artifactId>localizer</artifactId><version>1.8</version></dependency>

當我們build的時候,會失敗,並輸出未找到錯誤資訊

2.宣告java.net倉庫

為了告訴Maven從遠端倉庫裡獲取依賴,我們需要宣告一個遠端倉庫,在pom.xml裡這樣寫

<repositories><repository><id>java.net</id><url>https://maven.java.net/content/repositories/public/</url></repository></repositories>

這樣,Maven搜尋依賴的順序就是:

1)搜尋本地倉庫,沒有找到,就去第2步,否則退出

2)搜尋中央倉庫,沒有找到,就去第3步,否則退出

3)去java.net遠端倉庫獲取,沒有找到,就報錯,否則退出

補充:JBoss也有個遠端倉庫,可以如下配置:

<project ...><repositories><repository><id>JBoss repository</id><url>http://repository.jboss.org/nexus/content/groups/public/</url></repository></repositories></project>