2011-03-16 1 views
35

J'ai 3 dépôts dans mon settings.xml parce que j'ai besoin d'artefacts de chacun d'entre eux. A chaque fois qu'une dépendance ne se trouve pas, Maven essaieComment faire pour définir l'ordre des dépôts dans 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> 

tous les dépôts, mais la plupart du temps trouve l'artefact dans le centre (repo1) bien sûr. Je veux que Maven vérifie d'abord ce repo. 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, ce 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" 

Mon 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

votons pour les questions suivantes: http://jira.codehaus.org/browse/MNG-4946 et http://jira.codehaus.org/browse/MNG- 4400 –

+0

Il suffit de choisir un repo de travail et «seulement» le configurer ... – smwikipedia

+0

@HendyIrawan semble que MNG-4400 a été corrigé avec maven 3.0 FWIW – rogerdpack

Répondre

21

Pour autant que je sais l'ordre des dépôts en vous pom.xml également décider de l'ordre de l'accès référentiel. En ce qui concerne la configuration de repos dans settings.xml J'ai lu que l'ordre des repos est assez intéressant l'ordre inverse de la façon dont les repos seront accessibles.

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

+0

Votre lien semble prometteur et j'ai essayé d'inverser l'ordre, mais cela n'aide pas. –

+0

Hmm, étrange. Quelle version de Maven utilisez-vous? – fgysin

+0

Maven Version 2.2.1 comme indiqué dans la question ... –

5

En outre, envisager d'utiliser un gestionnaire de référentiel tel que le Nexus et configurer tous vos référentiels là.

+0

Bien sûr, je le ferais si je pouvais ;-) –

+0

Pourquoi vous ne pouvez pas l'utiliser? Si c'est parce que vous ne pouvez pas maintenir votre propre serveur, vous pouvez essayer [Artifactory Online] (https://www.jfrog.com/home/v_artifactorycloud_overview), vous obtiendrez un cloud Maven repo opérationnel minutes. – JBaruch

7

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. Par conséquent cette recherche repo forcé commande:

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