Почему maven не видит выпуск как последний снимок?

У меня есть проект A, зависящий от проекта B. Проект B некоторое время имел номер версии 1.0.0-SNAPSHOT. После того, как мы выпустили проект B с номером версии 1.0.0, мы удалили все старые снимки из репозитория, потому что на сервере требовалось много места для хранения 836 старых снимков. Однако проект A теперь терпит неудачу, потому что он больше не может найти версию 1.0.0-SNAPSHOT проекта B.

Вопрос: Почему maven не считает выпуск 1.0.0 одинаково полезным в качестве снимка состояния и просто использует его?


person Geert Schuring    schedule 25.04.2012    source источник


Ответы (2)


Ну, потому что вот как это работает и так устроено. На самом деле не так очевидно, что версия 1.0.0 является версией 1.0.0-SNAPSHOT, но выпущена, потому что для этого нет строгих требований. Возможно, что некоторые версии SNAPSHOT никогда не выпущены, или финальные выпуски артефактов могут быть без SNAPSHOT (потому что они не были развернуты).

На самом деле это две разные версии, поэтому не должно быть автоматического переключения между ними без вашего разрешения. Фактически, Maven достаточно умен, чтобы предположить, что 1.0.0, вероятно, является последним выпуском 1.0.0-SNAPSHOT, и предлагает это во время процесса выпуска (maven-release-plugin), но пока вы разрабатываете свой фрагмент кода, он делает именно то, что вы хотите и вам нужна версия 1.0.0-SNAPSHOT, как вам требуется в POM.

person Michał Kalinowski    schedule 25.04.2012

Релизы - это просто не эквивалент SNAPSHOT :( Снимки по сути являются сборками для разработки, поэтому Maven не пытается продумать, какую из них извлечь. Вам придется либо поместить снимок обратно в репозиторий, либо изменить свой проект. в зависимости от версии выпуска, а именно 1.0.0.

person Lo-Tan    schedule 25.04.2012