Как обновить локальный репозиторий 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.
Обозначение следует за синтаксисом стандартного математического интервала, где

[= включение в интервале (= исключение из интервала

(в школе я всегда думал о квадратных скобках как о "удерживании" этого элемента, в то время как более мягкая скобка "пусть это идет" )

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