2013-04-02 3 views
3

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

mvn clean install -U 

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

ответ

3

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

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

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

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

Комментарий на моментальных изменений

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

Снимки - это функция, требуемая при совместном использовании артефактов разработки с другими проектами с использованием Maven. Функции динамической ревизии IMHO ivy являются более мощными, поскольку они разрешают «последнюю» ревизию во время сборки. Посмотрите, как deliver задача сочетается с makepom задачи в следующих примерах:

+4

Требования к обновлению для maven-metadata.xml описаны здесь: https://support.sonatype.com/entries/24431666. – ingyhere

1

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

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

+2

Это здорово, но этот пост посвящен публикации, а не разрешению артефактов. В документации четко указано, что этот атрибут используется только для того, чтобы сообщить резольверу, как и где получить файл. Ничего о публикации, которую я вижу (http://ant.apache.org/ivy/history/latest-milestone/resolver/ibiblio.html). Для тех из нас, кто хочет использовать Ivy в гетерогенной среде языка/сборки, где мы фактически полагаемся на maven-metadata.xml - нас оставляют на холоде. – ingyhere

+0

Мы используем Ivy для публикации и извлечения, поэтому это исправление было хорошо для нас – Nathan

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