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

Pet*_*ler 53 java dependency-management maven

我在settings.xml中有3个存储库,因为我需要来自所有存储库的工件.每当找不到依赖项时,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>
Run Code Online (Sandbox Code Playgroud)

所有存储库,但大多数时候在中心(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"
Run Code Online (Sandbox Code Playgroud)

我的 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>
Run Code Online (Sandbox Code Playgroud)

fgy*_*ica 28

据我所知,pom.xml中存储库的顺序也将决定存储库访问的顺序.

至于在settings.xml中配置repos,我已经读过repos的顺序很有趣,与repos的访问方式相反.

这里有人解释这种好奇心的帖子:http:
//community.jboss.org/message/576851

  • 这不是相反的顺序。您应该将本地存储库指定为 &lt;repositories&gt; 标记中的第一个 (3认同)

小智 24

在我的情况下,这些答案都不正确..顺序似乎取决于<id>标签的字母顺序,<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>
Run Code Online (Sandbox Code Playgroud)

  • 它一定是某些特定的(被窃听的?)Maven 版本范围。我有 maven 3.6,这是在接受的答案中列出的顺序。 (2认同)

Puc*_*uce 5

另外,请考虑使用Nexus等存储库管理器并在那里配置所有存储库.

  • 为什么你不能使用它?如果那是因为你无法维护自己的服务器,你可以尝试[Artifactory Online](https://www.jfrog.com/home/v_artifactorycloud_overview),你会得到一个云Maven repo并运行分钟。 (2认同)