2013-06-10 3 views
4

У меня есть проект Maven2. Все зависимости, кроме одного, загружаются из общего репозитория http://repo.maven.apache.org/maven2/.maven setup другой репозиторий для определенной зависимости

Но у меня есть 1 зависимость, которую мне нужно загрузить из внутреннего репозитория компании (мы используем Sonatype Nexus для хранения этой зависимости).

Кроме того, я не хочу создавать полную копию публичного репо на моем внутреннем репо.

На данный момент у меня есть в pom.xml:

<url>http://maven.apache.org</url> 

и

<repositories> 
    <repository> 
     <id>thirdparty</id> 
     <url>http://<my_nexus_server_ip>:8081/nexus/content/repositories/thirdparty</url> 
    </repository> 
</repositories> 

Так, во время сборки я вижу много мусорных сообщений (в данном случае первая линия представляет собой мусор) :

Downloading: http://<my_nexus_server_ip>:8081/nexus/content/repositories/thirdparty/ant/ant/1.6.5/ant-1.6.5.pom 
Downloading: http://repo.maven.apache.org/maven2/ant/ant/1.6.5/ant-1.6.5.pom 
Downloaded: http://repo.maven.apache.org/maven2/ant/ant/1.6.5/ant-1.6.5.pom (861 B at 3.2 KB/sec) 

Я хочу, чтобы четко указать Maven, для которых зависимостей он должен использовать внутреннее хранилище и игнорировать его для других депе (и укажите, что для других зависимостей Maven2 должен использовать общедоступный репозиторий).

Не могли бы вы помочь реализовать такое поведение в Maven?

Спасибо заранее!

ответ

-1

Вам необходимо настроить группу общественного хранилища в Nexus будет использоваться только один в вашем Maven строит так:

<settings> 
    <mirrors> 
    <mirror> 
     <!--This sends everything else to /public --> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>http://localhost:8081/nexus/content/groups/public</url> 
    </mirror> 
    </mirrors> 
    <profiles> 
    <profile> 
     <id>nexus</id> 
     <!--Enable snapshots for the built in central repo to direct --> 
     <!--all requests to nexus via the mirror --> 
     <repositories> 
     <repository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
     </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </pluginRepository> 
     </pluginRepositories> 
    </profile> 
    </profiles> 
    <activeProfiles> 
    <!--make the profile active all the time --> 
    <activeProfile>nexus</activeProfile> 
    </activeProfiles> 
</settings> 

Вы должны установить отдельный репозиторий в связующем, как вы описали репо под названием ThirdParty и добавьте этот репозиторий в конфигурацию группы публичных репозиториев. Кроме того, вам нужно загрузить одну зависимость в этот конкретный репозиторий. Кроме того, вам необходимо использовать выпуск и SNAPSHOT, что означает, что вам необходимо соответствующим образом настроить распределение распределения в файле master master.

+0

Мы используем Sonatype, как описано выше. Мы используем его для управления нашими частными компонентами. Но в нашем проекте много внешних зависимостей, которые Maven загружает из публичного хранилища. Мне нужно сказать, что Maven использует наш внутренний репозиторий только для 1 зависимости и для других. Проблема в журнале Maven. Я не хочу видеть много попыток Maven загружать зависимости из неправильных репозиториев (наш пакет из публичного репо и внешних пакетов из нашего внутреннего репо). Я думаю об этом, как о конфигурации конфигурации Maven. – zubactik

+0

Ах. Непонимание на моем сайте. Обновленный ответ соответственно. – khmarbaise

1

Согласно this answer, невозможно установить определенный репозиторий для некоторых заявленных зависимостей.

Смежные вопросы