web-dev-qa-db-fra.com

Paramètres Maven pour plusieurs référentiels

J'ai les éléments suivants dans settings.xml

<mirrors>
       <mirror>
          <id>paid-jars</id>
          <name>jars with license</name>
          <url>http://url:8081/nexus/content/repositories/paidjars/</url>
          <mirrorOf>!central</mirrorOf>
      </mirror>
      <mirror>
          <id>Org-central</id>
          <name>mirror of central</name>
          <url>http://url:8081/nexus/content/repositories/central/</url>
          <mirrorOf>central</mirrorOf>
      </mirror>
  </mirrors>

Dans pom.xml j'ai deux pots

  1. Apache-commons.jar (que je suppose être téléchargé depuis le centre)
  2. license.jar (que je suppose être téléchargé à partir de pots payés)

Mais quand je lance maven clean install il essaie de télécharger license.jar depuis Org-central.

Comment puis-je lui faire utiliser des pots payants pour télécharger? Est-il possible qu'il passe d'abord à Org-central et s'il échoue, il essaie des pots payés? Si c'est le cas, comment? Je ne veux pas mettre d'entrées de repo dans pom.xml


Settings.xml

<?xml version="1.0" encoding="UTF-8"?>    
<settings xmlns="http://maven.Apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.Apache.org/SETTINGS/1.0.0
                 http://maven.Apache.org/xsd/settings-1.0.0.xsd">
  <proxies>    
    <proxy>
      <id>Proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>username</username>
      <password>******</password>
      <Host>Host.url</Host>
      <port>8080</port>
      <nonProxyHosts>local.net|internal.com</nonProxyHosts>
    </proxy>
  </proxies>
 <mirrors>
       <mirror>
          <id>paid-jars</id>
          <name>jars with license</name>
          <url>http://url:8081/nexus/content/repositories/paidjars/</url>
          <mirrorOf>!central</mirrorOf>
      </mirror>
      <mirror>
          <id>Org-central</id>
          <name>mirror of central</name>
          <url>http://url:8081/nexus/content/repositories/central/</url>
          <mirrorOf>central</mirrorOf>
      </mirror>
  </mirrors>
  <profiles>
      <profile>
          <id>compiler</id>
          <properties>
              <Java_1_7_HOME>C:\Program Files (x86)\Java\jdk1.7.0_51\bin</Java_1_7_HOME>
          </properties>
      </profile>
  </profiles>
</settings>
18
Rohit Sachan

vous devez configurer le miroir

<mirror>
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <url>http://internal/nexus/content/repositories/thirdparty</url>
</mirror>

 <mirror>
  <id>google</id>
  <mirrorOf>google</mirrorOf>
  <url>http://google-maven-repository.googlecode.com/svn/repository</url>
</mirror>   

puis ajouter un référentiel interne et externe

<profile>
     <id>nexus</id>
  <repositories>

    <repository>
      <id>central</id>
      <name>central</name>
      <url>http://internal/nexus/content/repositories/thirdparty</url>
    </repository>


    <repository>
      <id>google</id>
      <name>google</name>
      <url>http://google-maven-repository.googlecode.com/svn/repository</url>
    </repository>

  </repositories>
</profile>
13
Ashkrit Sharma

Dans settings.xml, définissant mirror avec id et url pour le référentiel en plus d'utiliser la même chose dans profile a fonctionné pour moi, comme ci-dessous:

<mirrors>
       <mirror>
        <id>Artifactory</id>      
        <url>http://localhost:4900/archiva/repository/</url>
        <mirrorOf>artifactory</mirrorOf>
       </mirror>
       <mirror>
        <id>MavenCentral</id>       
        <url>https://repo.maven.Apache.org/maven2</url>
        <mirrorOf>central</mirrorOf>
       </mirror>
</mirrors>

<profiles>
    <profile>
        <id>Project</id>
        <properties>
           <framework.version>1.0.9</framework.version>      
           <maven.test.skip>false</maven.test.skip>
           <maven.test.failure.ignore>false</maven.test.failure.ignore> 
           <maven.javadoc.skip>false</maven.javadoc.skip>               
           <source.jdkversion>1.8</source.jdkversion>
           <target.jdkversion>1.8</target.jdkversion>
        </properties>   
        <repositories>
           <repository>
                <id>Artifactory</id>
                <name>Maven Artifactory for Project</name>
                <url>http://localhost:4900/archiva/repository/</url>
                <layout>default</layout>
                <releases>
                        <enabled>true</enabled>
                        <updatePolicy>never</updatePolicy>
                </releases>
                <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>never</updatePolicy>
                </snapshots>
            </repository>
            <repository>
                <id>MavenCentral</id>
                <url>https://repo.maven.Apache.org/maven2/</url>
            </repository>
        </repositories>             
     </profile>
 </profiles>    
7
Arpit

Il est impossible de spécifier un référentiel dédié pour rechercher un artefact. Maven recherchera tous les référentiels configurés un par un jusqu'à ce que l'artefact soit trouvé. Ajoutez simplement le miroir central et le référentiel interne au settings.xml et ça ira.

Lire Guide Maven pour configurer plusieurs référentiels . En ce qui concerne l'ordre des référentiels, voir ceci réponse .

4
aleung