Ivy через прокси-сервер Nexus
Вопрос
кто-нибудь знает, как мне указать в 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>
но я не могу найти такого варианта в Ivy.
Решение
Я не думаю, что такая опция существует напрямую. Вы можете попробовать реализовать цепочку и поставить свой репозиторий Nexus вперед. центрального в этой цепи. Если я понимаю, как правильно работают цепочки (это очень важно), Айви проверит ваш репозиторий перед центральным, так что, пока ваш репозиторий имеет соответствующее центральное содержимое, больше не потребуется.
Подробнее читайте в учебном пособии . р>
Другие советы
Вам нужно создать общедоступный распознаватель, который делает то, что вы хотите (подробнее @ Документы по плющу)
В принципе, сохраните следующий фрагмент под $USERHOME/.ivy2/ivysettings-public.xml.Это должно сработать.
<ivysettings>
<resolvers>
<ibiblio name="public" m2compatible="true" root="http://localhost:8081/content/groups/public"/>
</resolvers>
</ivysettings>
- Стандартная установка без изменений содержит "nexus" в URL-адресе!
- Если вам нужно развернуть артефакты, я думаю, что решение состоит в том, чтобы сделать что-то похожее на общий распознаватель (см. Ссылку на документы выше), но я не пробовал.
- Я изменил ваш локальный URL-адрес, чтобы разрешить стандартный "контент / группы / общедоступный", что лучше, поскольку во фрагменте настроек maven выше вы передаете все вызовы через зеркало, а не только в центральный.Просто добавьте любые дополнительные репозитории в эту группу в пользовательском интерфейсе Nexus по мере их появления, и все будет в порядке.
- Если ваш проект загружает свои собственные ivysettings, которые не соответствуют значениям по умолчанию, то эти настройки не будут загружены, и вы снова вернетесь к нулю : (
Вот как я это сделал (ответ от @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.
Я сделал то же самое, но с 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>
Archiva управляет репозиториями Maven 2 (артефакты с метаданными Maven) обычно метаданных Ivy нет (ivy.xml).И макет Maven 2 - это [организация] / [модуль] / [редакция] / [артефакт] -[редакция].[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>