Maven пытается использовать неправильную версию моментального снимка

StackOverflow https://stackoverflow.com/questions/986040

  •  13-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь развернуть моментальный снимок сторонней библиотеки в нашем локальном репозитории (по причинам устаревшего это старая версия, которая больше не размещается ни в одном онлайн-репозитории, и на данный момент я не могу ее заменить, поэтому Мне нужно разместить его локально).

Думаю, я неправильно понял концепцию SNAPSHOT, поэтому был бы очень благодарен, если бы кто-нибудь смог меня прояснить.У меня есть jar-файл с именем foo-0.5.0-20090612.124.jar, и я пытаюсь загрузить его с помощью файла maven Deploy:deploy в org.bar.foo под версией 0.5.0.Зависимость версии в моем POM — 0.5.0-SNAPSHOT.

Каждый раз, когда я загружаю файл jar в наш локальный репозиторий, число, следующее за датой в имени файла, повторяется (т. е. до 125), но когда я запускаю установку maven, maven пытается загрузить jar с предыдущим номером (т. е.124).

Итак, есть ли какой-нибудь способ заставить maven загрузить правильную версию моментального снимка, или мне не следует загружать сторонние файлы SNAPSHOT в наш репозиторий?

Это было полезно?

Решение

Ваш вариант использования в порядке.Я считаю, что лучшая практика, рекомендованная ребятами из Maven, заключается в том, что после загрузки версии jar SNAPSHOT в общий репозиторий вам следует перестать рассматривать ее как SNAPSHOT, а вместо этого как релиз.

Это имеет смысл, потому что вы хотите, чтобы люди зависели от эта конкретная версия этого артефакта.Артефакт не находится в активной разработке и не ожидается произвольных изменений в любой момент времени, поэтому его следует считать выпуском.Только тот, которому вы даете свое личное причудливое имя, и тот, который кто-то другой посчитал СНИМКОМ.

Когда вы запрашиваете зависимость foo-0.5.0-SNAPSHOT, я не верю, что Maven ищет foo-0.5.0-.Я считаю, что он буквально ищет foo-0.5.0-SNAPSHOT в репозитории, и именно поэтому вы его не находите.(Однако я не уверен на 100% в этом, поскольку мы не ставим метки времени на наших СНИМКАХ.Мы просто постоянно перезаписываем jar-файлы -SNAPSHOT новыми версиями по мере их создания.)

Итак, поместите foo-0.5.0-20090612.124.jar в свой сторонний репозиторий (который должен содержать только выпуски по вышеуказанной причине).Затем в вашем pom явно укажите «выпущенный» артефакт foo-0.5.0-20090612.124, и все должно работать нормально.

Другие советы

Я не уверен, что понял, у вас должен быть артефакт под названием myartifact.jar прикреплен к POM с версией 0.5-SNAPSHOT.

При развертывании ваш репозиторий должен изменить -SNAPSHOT в метку времени и обновите метаданные репозитория, чтобы отразить, что это самая последняя версия SNAPSHOT, чтобы она могла правильно обслуживать запросы SNAPSHOT.

Используете ли вы репозиторий, такой как Архив или Нексус или просто FTP/HTTP-сервер?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top