Maven пытается использовать неправильную версию снимка - PullRequest
4 голосов
/ 12 июня 2009

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 12 июня 2009

Вариант использования у вас в порядке. Я полагаю, что лучшая практика, рекомендуемая людьми Maven, заключается в том, что после загрузки SAR-версии JAR-файла в общий репозиторий вы должны прекратить рассматривать его как 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 голосов
/ 12 июня 2009

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

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

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

...