web-dev-qa-db-ja.com

複数のリポジトリのMaven設定

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>

Pom.xmlには2つのjarがあります

  1. Apache-commons.jar(私は中央からダウンロードされると想定しています)
  2. licensed.jar(これは有料のjarからダウンロードされると想定しています)

しかし、maven clean installそれはOrg-centralからlicensed.jarをダウンロードしようとします。

有料瓶を使用してダウンロードするにはどうすればよいですか?最初にOrg-centralに行き、失敗した場合は有料のjarで試行しますか?もしそうなら、どのように? 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

ミラーをセットアップする必要があります

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

次に、内部および外部リポジトリを追加します

<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

settings.xmlmirrorで同じものを使用することに加えて、リポジトリに対してidurlprofileを定義すると、以下のように機能しました:

<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

専用のリポジトリを指定してアーティファクトを検索することはできません。 Mavenは、アーティファクトが見つかるまで、構成されたすべてのリポジトリを1つずつ検索します。中央ミラーと内部リポジトリの両方をsettings.xmlに追加するだけで問題ありません。

複数のリポジトリをセットアップするためのMavenガイド を読んでください。リポジトリの順序に関しては、これを参照してください answer

4
aleung