web-dev-qa-db-fra.com

Comment définir l'ordre des référentiels dans Maven settings.xml

J'ai 3 référentiels dans mon settings.xml parce que j'ai besoin d'artefacts de chacun d'eux. Chaque fois qu'une dépendance n'est pas trouvée, Maven essaie

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>

tous les référentiels, mais la plupart du temps trouve bien sûr l'artefact dans le central (repo1). Je veux que Maven vérifie d'abord ce dépôt. J'ai essayé l'ordre des déclarations dans settings.xml, mais cela n'a pas fonctionné. Selon fgysin j'ai également essayé l'ordre inverse, qui n'a rien changé.

Ma version 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"

Ma 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>
50
Peter Kofler

Pour autant que je sache, l'ordre des référentiels dans votre pom.xml décidera également de l'ordre d'accès au référentiel.

Quant à la configuration des référentiels dans settings.xml, j'ai lu que l'ordre des référentiels est assez intéressant l'ordre inverse de la façon dont les référentiels seront accédés.

Voici un article où quelqu'un explique cette curiosité:
http://community.jboss.org/message/576851

27
fgysin

Aucune de ces réponses n'était correcte dans mon cas .. l'ordre semble dépendre de l'ordre alphabétique de la balise <id>, qui est une chaîne arbitraire. D'où cet ordre de recherche repo forcé:

            <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>
20
Frank Carnovale

Pensez également à utiliser un gestionnaire de référentiels tel que Nexus et à y configurer tous vos référentiels.

5
Puce