2011-03-16 61 views
35

我在我的settings.xml中有3個倉庫,因爲我需要所有這些倉庫的工件。每當找不到依賴,Maven的嘗試如何在Maven settings.xml中設置倉庫的順序

Downloading: http://some.server/mvn2repo/releases/org/apache/lucene/lucene-core/2.9.1/... 
[INFO] Unable to find resource 'org.apache.lucene:lucene-core:pom:2.9.1' in repository 
Downloading: http://some.server/mvn2repo/3rdParty/org/apache/lucene/lucene-core/2.9.1/... 
[INFO] Unable to find resource 'org.apache.lucene:lucene-core:pom:2.9.1' in repository 
Downloading: http://repo1.maven.org/maven2/org/apache/lucene/lucene-core/2.9.1/lucene-core-2.9.1.pom 
<success> 

所有存儲庫,但大部分時間都在集中(repo1)神器當然。我希望Maven先檢查這個回購。我在settings.xml中嘗試了聲明的順序,但沒有奏效。根據fgysin我也試過相反的順序,這並沒有改變任何東西。

我的Maven的版本:

C:\>mvn -v 
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200) 
Java version: 1.6.0_15 
Java home: C:\Program Files\Java\jdk1.6.0_15\jre 
Default locale: de_AT, platform encoding: Cp1252 
OS name: "windows vista" version: "6.0" arch: "amd64" Family: "windows" 

settings.xml

<profiles> 
    <profile> 
     <id>space</id> 
     <repositories> 
      <repository> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>false</enabled> 
       </snapshots> 
       <id>s1-releases</id> 
       <name>System One Releases</name> 
       <url>http://some.server/mvn2repo/releases</url> 
      </repository> 
      <repository> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>false</enabled> 
       </snapshots> 
       <id>s1-3rdParty</id> 
       <name>System One 3rd Party Releases</name> 
       <url>http://some.server/mvn2repo/3rdParty</url> 
      </repository> 
      <repository> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>true</enabled> 
       </snapshots> 
       <id>central</id> 
       <url>http://repo1.maven.org/maven2</url> 
      </repository> 
     </repositories> 
     <pluginRepositories> 
      <pluginRepository> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>true</enabled> 
       </snapshots> 
       <id>central</id> 
       <url>http://repo1.maven.org/maven2</url> 
      </pluginRepository> 
     </pluginRepositories> 
    </profile> 
</profiles> 

<activeProfiles> 
    <activeProfile>space</activeProfile> 
</activeProfiles> 
+0

讓我們投票選出了以下問題:http://jira.codehaus.org/browse/MNG-4946和http://jira.codehaus.org/browse/MNG- 4400 – 2013-05-27 07:12:56

+0

只需選擇一個工作回購和'只'配置它... – smwikipedia 2015-12-12 09:44:45

+0

@HendyIrawan似乎MNG-4400已修復與maven 3.0 FWIW – rogerdpack 2016-05-10 19:54:11

回答

21

據我所知道的資料庫的順序,你的pom.xml也將決定的存儲庫訪問的順序。

至於在settings.xml中配置repos我已經讀過repos的順序是有趣的反向如何訪問repos的順序。

這裏後如果有人解釋這種好奇心:
http://community.jboss.org/message/576851

+0

你的鏈接看起來很有希望,我試着顛倒了順序,但它沒有幫助。 – 2011-03-16 17:11:07

+0

嗯,奇怪。你使用的是什麼版本的Maven? – fgysin 2011-03-17 09:01:30

+0

Maven版本2.2.1如問題所示... – 2011-05-07 22:49:34

5

另外,考慮使用一個倉庫管理器,如Nexus和配置所有倉庫那裏。

+0

當然,如果可以的話,我會的;-) – 2011-03-18 07:59:46

+0

爲什麼你不能使用它?如果這是因爲你無法維護你自己的服務器,你可以嘗試一下[Artifactory Online](https://www.jfrog.com/home/v_artifactorycloud_overview),你會得到一個雲Maven repo並運行分鐘。 – JBaruch 2013-08-06 06:24:53

7

以上答案都不在我的情況下是正確的..順序似乎取決於<ID>標籤,這是一個任意字符串的字母順序。因此,這種被迫回購搜索順序:

  <repository> 
       <id>1_maven.apache.org</id> 
       <releases> <enabled>true</enabled> </releases> 
       <snapshots> <enabled>true</enabled> </snapshots> 
       <url>https://repo.maven.apache.org/maven2</url> 
       <layout>default</layout> 
      </repository> 

      <repository> 
       <id>2_maven.oracle.com</id> 
       <releases> <enabled>true</enabled> </releases> 
       <snapshots> <enabled>false</enabled> </snapshots> 
       <url>https://maven.oracle.com</url> 
       <layout>default</layout> 
      </repository>