Maven пытается использовать неправильную версию моментального снимка
Вопрос
Я пытаюсь развернуть моментальный снимок сторонней библиотеки в нашем локальном репозитории (по причинам устаревшего это старая версия, которая больше не размещается ни в одном онлайн-репозитории, и на данный момент я не могу ее заменить, поэтому Мне нужно разместить его локально).
Думаю, я неправильно понял концепцию 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-сервер?