2009-06-12 4 views
4

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

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

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

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

ответ

4

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

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

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

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

+0

Я скажу, что по сути вы правы, у меня действительно нет бизнеса, добавляющего сторонний снимок к моему репо. Лучшее решение было самым простым, а именно для удаления тега SNAPSHOT. – mikek

0

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

При развертывании, ваше хранилище должен изменить -SNAPSHOT в метку времени и обновить метаданные хранилища, чтобы отразить, что это самая последняя версия СНАПШОТ, чтобы он мог правильно служить запрос SNAPSHOT.

Вы используете репозиторий, такой как Archiva или Nexus или только FTP/HTTP-сервер?

+0

Ни один локальный файловый сервер. Это репо предназначено исключительно для внутреннего использования. Это в значительной степени то, что я пытаюсь сделать. Проблема в том, что когда я запускаю maven install, он не ищет правильную метку времени, а раньше. Есть ли что-то, что присуще сторонней банке, которая определяет ее временную метку? – mikek

Смежные вопросы