Плющ через прокси Nexus - PullRequest
11 голосов
/ 23 июня 2009

Кто-нибудь знает, как я могу указать в Ivy что-то вроде mirror / mirrorOf в Maven? Я работаю с локальным прокси-сервером Maven (Nexus) и мне нужен инструмент, чтобы указать, к какому из родительских репозиториев должен обращаться прокси-сервер Nexus.

В Maven я делаю просто:

<mirrors>
  <mirror>
    <id>central-mirror</id>
    <mirrorOf>central</mirrorOf>
    <url>http://localhost:8081/content/repositories/central</url>
  </mirror>
</mirrors>

но я не могу найти такой вариант в Айви.

Ответы [ 5 ]

8 голосов
/ 12 марта 2010

Вам нужно создать общедоступный преобразователь, который делает то, что вы хотите (подробнее @ Ivy docs )

В основном сохраните следующий фрагмент в $ USERHOME / .ivy2 / ivysettings-public.xml. Это должно сработать.

<ivysettings> 
  <resolvers> 
    <ibiblio name="public" m2compatible="true" root="http://localhost:8081/content/groups/public"/> 
  </resolvers> 
</ivysettings>
  • У неизмененной стандартной установки в URL есть 'nexus'!
  • Если вам нужно развернуть артефакты, я думаю, что решение состоит в том, чтобы сделать что-то похожее на разделяемый преобразователь (см. Ссылку на документы выше), но я не пробовал.
  • Я изменил ваш локальный URL-адрес, чтобы он соответствовал стандартному 'content / groups / public', что лучше, поскольку во фрагменте настроек maven выше вы передаете все вызовы через зеркало, а не только центральные. Просто добавьте все дополнительные репозитории в эту группу в интерфейсе Nexus по мере их появления, и все будет в порядке.
  • Если ваш проект загружает свои собственные ivysettings, которые не соблюдают значения по умолчанию, то эти настройки не будут загружены, и вы снова вернетесь к нулю: (
6 голосов
/ 08 июля 2009

Я не думаю, что такая опция существует напрямую. Вы можете попробовать реализовать цепочку и поставить свой репозиторий Nexus впереди центрального в этой цепочке. Если я пойму, как правильно работают цепочки (это большое, если), Айви проверит ваш репозиторий перед центральным, так что, пока ваш репозиторий имеет соответствующее центральное содержимое, не понадобится.

Подробнее см. Учебник .

2 голосов
/ 25 марта 2013

Вот как я это сделал (ответ от @Heron у меня не сработал):

Создать файл с таким содержанием:

<ivysettings>
  <settings defaultResolver="default"/>
  <property name="m2-pattern" value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" override="false" />
  <resolvers>
    <chain name="default">
        <ibiblio name="public" m2compatible="true" root="http://nexus-server:8081/nexus/content/groups/public"/>
    </chain>
  </resolvers>
</ivysettings>

Ссылка на него из муравьиной сборки:

<ivy:settings file="/Users/wdb/.ivy2/ivysettings-public.xml" />

Ivy теперь может разрешать зависимости из моего хранилища Nexus.

0 голосов
/ 05 ноября 2009

Archiva управляет репозиториями Maven 2 (артефакты с метаданными Maven) обычно нет метаданных Ivy (ivy.xml). А макет Maven 2 - это [организация] / [модуль] / [ревизия] / [артефакт] - [ревизия]. [Доб].

Мы должны предоставить только следующую информацию

<url name="archiva" m2compatible="true">
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
  </url>
</chain>

или

  <settings defaultResolver="archiva"/>
  <resolvers>
<ibiblio name="archiva" m2compatible="true" root="http://.../archiva/repository/internal/[organization]/[module]/[revision]/[artifact]-[revision].[ext]"/>
  </resolvers>
0 голосов
/ 06 октября 2009

Я сделал то же самое, но с Archiva, что очень похоже. Вам нужно только объявить в новой цепочке следующее:

<chain name="private">
<url name="archiva" m2compatible="true">
  <ivy pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/ivy.xml" /> 
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact].[ext]" /> 
  </url>
</chain>
...