2009-06-23 2 views
11

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

В Maven я просто:

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

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

ответ

6

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

Подробнее см. В tutorial.

+1

Спасибо, это то, чего я боялся. Айви просто не оправдывает моих ожиданий после работы с Maven. –

+2

У Айви просто есть другой подход к управлению зависимостями. –

+6

-1 комментарий Марка. Это не совсем так, это недостающая особенность. В качестве аналогии: представьте, что вы используете браузер, который не имеет настроек для «Прокси-конфигурации», это не значит, что он подходит к веб-браузеру по-другому, это означает, что программное обеспечение непригодно (без хаков), когда вам действительно нужно установить прокси. –

-1

Я сделал то же самое, но с 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> 
+1

Использование Archiva для достижения проксирования не входит в сферу действия вопроса. Вы можете сделать это несколькими разными способами. Проблема заключается в том, чтобы использовать это из плюща аналогичным образом, он используется в maven. –

+0

Я не думаю, что такой вариант существует в Айви. –

-1

Archiva управляет Maven 2 репозиториев (артефакты с Maven мета-данных) Существует правило, не данные Ivy мета (ivy.xml). И макет Maven 2 [организация]/[module]/[revision]/[артефакт] - [ревизия]. [Ext].

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

<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

Использование Archiva для достижения проксирования не входит в сферу действия вопроса. Вы можете сделать это несколькими разными способами. Проблема заключается в том, чтобы использовать это из плюща аналогичным образом, он используется в maven. –

8

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

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

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

Я попробую, но кажется, что тот факт, что проект ivysettings.xml полностью переопределяет конфигурацию пользователя, не будет полезен для меня. Но все равно спасибо! –

+0

Проблема в том, что вы должны иметь возможность получить проект из репозитория и просто его создать. С любыми изменениями в локальной среде все это в окне ... Но в любом случае спасибо за ваш ответ! –

+0

Пробовал эту технику с https://svn.apache.org/repos/asf/ant/core/trunk/[email protected]#checkstyle, и это, казалось, не имело никакого эффекта; сообщения назывались «загрузка http: //repo1.maven.org/maven2/...» по-прежнему. –

2

Это, как я сделал это работает (ответ от @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> 

Refere к нему от муравьев строить:

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

Ivy теперь может разрешать зависимости из моего репозитория nexus.

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