У меня проблемы с пониманием того, как работает last.integration.Определение поведения «latest.integration» в Ivy
У меня есть пример, который не дает выход, упомянутый в: http://ant.apache.org/ivy/history/latest-milestone/tutorial/defaultconf.html
, который говорит, местный распознаватель имеет приоритет над другими резольверами, независимо от времени публикации.
Моего ivysettings.xml выглядит следующим образом:
<resolvers>
<chain name="download-chain" returnFirst="false" >
<url name="nexus-repo" m2compatible="true" >
<artifact pattern="${nexus}/[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]" />
<ivy pattern="${nexus}/[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" />
</url>
<resolver ref="local" />
</chain>
</resolvers>
здесь я заявляю, что у меня есть хранилище нексуса URL-адрес и ссылка на значение по умолчанию локального. Я использую эту цепочку, когда хочу разрешить свои зависимости.
Я строю назначенный артефакт и опубликовать его в местный со статусом «интеграции» с пересмотром «ГОЛОВЫ» (что-то вроде SNAPSHOT для нас), сначала с помощью локального распознаватель:
<ivy:publish
overwrite="yes"
update="true"
artifactspattern="${project.dist.dir}/[artifact]-[revision](-[classifier]).[ext]"
resolver="local"
settingsRef="ivy.nexus"
/>
и восстановить его снова и опубликовать его в хранилище связующего:
<ivy:publish
overwrite="yes"
update="true"
artifactspattern="${project.dist.dir}/[artifact]-[revision](-[classifier]).[ext]"
resolver="publish-url"
forcedeliver="true"
settingsRef="ivy.nexus"
/>
у меня есть еще один проект, который объявляет предыдущий артефакт, как зависимость с пересмотром «latest.integration».
Я ожидаю, что артефакт должен быть загружен из локального хранилища независимо от порядка объявленных преобразователей. Но это не так. Загруженный артефакт всегда относится к указанному выше распознавателю. Изменение имени «локального» преобразователя ничего не сказалось. Порядок всегда имеет значение.
Я попытался добавить change = "true" к моей зависимости. Это не помогло.
В этом вопросе: Ivy: Forcing local snapshot for dependency
спрашивающий упоминает даже различное поведение, а именно, что самая последняя подобран (порядок резольверами даже не имеет значения).
SO, чтобы обернуть его и жалко продление: Как получить артефакт:
1) всегда latest.integration (самая последняя), независимо от их местоположения.
2) всегда из местного, даже если в других местах имеется более новая версия интеграции.
3) Неужели я это не знаю?
Это займет некоторое тестирование моей стороны, и я уезжаю в офис на выходные. Однако локальный репозиторий будет использоваться для локальной разработки, где разработчики хотят протестировать свою текущую версию проекта с текущей версией проекта B. Использование связи для этого означало бы совместное использование артефактов разработки, и это не то, что мы хотим. Я буду тестировать POM, и я надеюсь, что они будут вести себя более последовательно. Последнее, пример, который вы предложили, был одним из моих уроков в этой вещи. Спасибо чувак. –
@EyadEbrahim Рад помочь. Сохранение снимков разработки локально, безусловно, будет проще для плюща. Если Nexus используется только для релизов, то моим последним советом является проверка задачи с плюсом. Вы обнаружите, что это очень полезно для увеличения номера выпуска, основываясь на том, что было ранее опубликовано. –