如何在Maven settings.xml中设置存储库的顺序

我在我的settings.xml中有3个仓库,因为我需要所有的人工制品。 只要没有find依赖关系,Maven就会尝试

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> 

据我所知,你的pom.xml中的仓库的顺序也将决定仓库访问的顺序。

至于在settings.xml中configurationrepos,我已经读过repos的顺序,有趣的是,repos的访问顺序是相反的。

在这里有人解释这个好奇心的post:
http://community.jboss.org/message/576851

这些答案都没有在我的情况下是正确的。顺序似乎依赖于<id>标签,这是一个任意string的字母顺序。 因此,这迫使回购search顺序:

  <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> 

另外,考虑使用像Nexus这样的存储库pipe理器,并在那里configuration所有的存储库。