2011-03-16 167 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>