Публикация Ivy SNAPSHOTS с метаданными Maven

У меня есть проект Ivy, который публикует свои артефакты в репозиторий Nexus Maven. Затем мне нужны другие проекты Maven, чтобы иметь возможность использовать эти банки в качестве зависимостей. Мне удалось заставить Айви создать и загрузить файл pom.xml вместе с банками, который работает нормально. Проблема в том, что когда я использую Ivy для публикации новой версии SNAPSHOT — ни один из проектов Maven не получит новую зависимость моментального снимка, даже если я это сделаю:

mvn clean install -U

Я заметил, что Ivy не публикует файл maven-metadata.xml в репозиториях — я предполагаю, что проблема в этом? Если да, то есть ли способы заставить Айви сделать это?


person kevinpeterson    schedule 02.04.2013    source источник


Ответы (2)


Ivy можно настроить для чтения этого файла при разрешении зависимостей (см. атрибут «m2-совместимый» ссылки ibilio преобразователь), но публикации не создает и не обновляет этот файл.....

По-видимому, это работа клиента по созданию и обновлению файла «maven-metadata.xml».... Это недокументированная функция репозиториев Maven. (Если бы кто-то мог найти, где это описано, возможно, ошибка плюща могла бы быть исправлена).

Стандартным обходным решением является периодическое планирование задачи Nexus для повторного создания файлов метаданных. Видеть:

Более экстремальное решение — использовать задачу Maven ANT для выполнения шага публикации... .

Комментарий к ревизиям моментальных снимков

В последнее время я пришел к выводу, что выпуск моментальных снимков не стоит затраченных усилий. Непрерывная доставка продвигает идею о том, что каждую сборку потенциально можно выпустить, а у ivy есть отличный buildnumber", которая гарантирует, что каждая сборка уникальна. Я считаю, что мой процесс сборки проще, когда есть только один тип сборки.

Снимки — это функция, необходимая только при совместном использовании артефактов сборки разработки с другими проектами, использующими Maven. ИМХО, динамические функции ревизии ivy более мощные, потому что они разрешают «последнюю» ревизию во время сборки. Посмотрите, как задача доставки сочетается с задачей < href="http://ant.apache.org/ivy/history/latest-milestone/use/makepom.html" rel="nofollow noreferrer">makepom в следующих примерах:

person Mark O'Connor    schedule 03.04.2013
comment
Требование обновления для maven-metadata.xml задокументировано здесь: support.sonatype.com/entries/24431666 . - person ingyhere; 05.09.2013

У меня была аналогичная проблема, и для ее решения мне помог следующий веб-сайт: nexus-using-apache-ivy/" rel="nofollow">http://ssinghvi.wordpress.com/2012/01/26/unable-to-retrieve-latest-artifact-from-sonatype-nexus-using-apache -плющ/

В основном используйте <ibiblio name="Maven Central" m2compatible="true" useMavenMetadata="false" root="http://…" />

person Ivory Micky    schedule 22.05.2013
comment
Это здорово, но этот пост посвящен публикации, а не разрешению артефактов. В документации четко указано, что этот атрибут используется только для того, чтобы сообщить распознавателю, как и где получить файл. Я ничего не вижу о публикации (ant.apache.org/ ivy/history/latest-milestone/resolver/ ). Для тех из нас, кто хочет использовать Ivy в гетерогенной среде языка/сборки, где мы фактически полагаемся на maven-metadata.xml, мы остаемся в дураках. - person ingyhere; 05.09.2013
comment
Мы используем Ivy как для публикации, так и для извлечения, поэтому это исправление нам подошло. - person Nathan; 21.12.2015