Как обновить локальный репозиторий maven с новыми артефактами из удаленного репозитория?
Мой модуль Maven M имеет зависимость от другого модуля Maven, предоставленного другими людьми. Когда я запускаю "mvn install" под A в первый раз, maven загружает B-1.0.jar из удаленного репозитория в мой локальный репозиторий maven. Мой модуль A отлично работает.
В то же время другие люди развертывают новый B-1.0.jar в удаленном репозитории. Когда я снова запускаю "mvn install" под A, maven не загружает новый B-1.0.jar из удаленного репозитория в мой локальный репозиторий. В результате моя сборка модуля A завершилась неудачно из-за изменений API в B-1.0.jar.
Я могу вручную удалить B-1.0.jar из моего локального репозитория. Затем maven загрузил последний B-1.0.jar из удаленного репозитория в следующий раз, когда я запустил "mvn install" .
Мой вопрос в том, как я могу автоматически разрешить maven загружать последние артефакты из удаленного репозитория. Я попытался установить updatePolicy на "всегда". Но это не помогло.
Ответы
Ответ 1
Maven никогда не перезапускает релизы - 1.0 считается окончательным, а новые выпуски должны использовать новую версию.
Если модуль B все еще находится в разработке, вы должны использовать версию 1.0-SNAPSHOT - моментальные снимки - это специальная версия Maven, которая будет проверять наличие обновлений, а при развертывании хранится с отметкой времени и номером сборки для отслеживания.
Ответ 2
Я согласен с Бреттом, выше: новые выпуски должны использовать новые версии. Для вашего случая моментальные снимки, вероятно, являются лучшим решением, но что-то еще, что может быть полезно, - использовать диапазоны версий зависимостей.
Таким образом, вы можете указать версию
(1.0,)
заявив, что вы принимаете любую версию больше 1.0.
или
[1.1.1,1.1.7]
принятие чего-либо между (включая) версиями 1.1.1 и 1.1.7.
Обозначение следует за синтаксисом стандартного математического интервала, где
[= включение в интервале
(= исключение из интервала
(в школе я всегда думал о квадратных скобках как о "удерживании" этого элемента, в то время как более мягкая скобка "пусть это идет" )
Это может быть полезно в случаях, когда ваши зависимости все еще находятся в процессе частых разработок, и вы не хотите полагаться на новые моментальные снимки, которые могут быть менее стабильными и, скорее всего, сломать ваш код. Вы можете указать безопасные диапазоны и отрегулировать границы вверх или вниз, по мере необходимости, со временем