2014-09-22 3 views
14

Вот результат МВН -версия:Maven Force Update Снимок Зависимости

Apache Maven 3.0.4 (r1232337; 2012-01-17 00:44:56-0800) 
Maven home: /usr/share/maven 
Java version: 1.7.0_67, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac" 

Предположим, у меня есть зависимость снимка:

<dependency> 
    <groupId>org.puzzled</groupId> 
    <artifactId>foo</artifactId> 
    <version>1.0.4-SNAPSHOT</version> 
</dependency> 

У меня есть загруженную копию этого снимка в моем местном репо , Но затем другие разработчики внесли улучшения, и есть обновление для foo-1.0.4-SNAPSHOT.jar. Я хочу опубликовать Maven в качестве распоряжения об обновлении этой зависимости, загрузив его из удаленного репозитория.

Согласно ответу на this и многие другие вопросы на SO, если я

mvn clean -U package 

он должен только (вос) скачать все зависимости. Правильно? Это не то, что происходит. Он загружает метаданные для зависимостей моментальных снимков, выводит (и ошибочно) на то, что обновление не требуется. Мне нужно удалить связанный подкаталог в моем локальном репозитории .m2 для Maven для обновления выпуска моментального снимка из удаленного репо, даже с флагом -U.

Это ошибка, или я чего-то не хватает?

+0

У меня никогда не было этой проблемы с maven 3.0.3, но начал получать ее в 3.2.3, как описано выше. :-( – dpetruha

+0

Чтобы проверить, возможно, вы захотите, по крайней мере, скопировать свою локальную папку .m2, чтобы сохранить в другом месте и очистить каталог .m2. Затем попробуйте запустить новую установку и посмотреть, захватывает ли она зависимости. просто убедитесь, что ваши настройки действительно правильны, и вы попадаете на правильный сервер для артефактов, если у вас есть все зависимости, кэшированные локально. – eisbaer

+0

Возможный дубликат [Force maven update] (http: // stackoverflow.com/questions/4701532/force-maven-update) – jordiburgos

ответ

-1
mvn clean install -U 

-U означает принудительное обновление зависимостей.

0

Вероятно, метаданные повреждены, либо в Nexus, из которого вы загружаете артефакт, либо в локальный репозиторий.

Если Nexus принадлежит вам, я бы восстановил метаданные.

0

Возможно ли, что репозиторий публикует ваш foo с использованием уникального имени SNAPSHOT?

Этот blog entry прекрасно объясняет разницу между уникальным и неповторимым артефактом SNAPSHOT.

По существу, это не уникально, если метаданные артефакта отображаются на nexus как foo-1.0.4-SNAPSHOT.jar. Он уникален, если он отображается как foo-1.0.4-20160122.172609-36.jar.

только публикует уникальные снимки моментального снимка в Maven 3, но все же разрешает старые временные снимки с уникальными моментами ... но это довольно неплохо. Взглянув на ancient doc, кажется, что существует некоторая нечеткая и неопределенная взаимосвязь между датой файловой системы и метаданных.xml на локальных и удаленных машинах.

По существу: (1) Постарайтесь, чтобы ваши зависимости SNAPSHOT были опубликованы с уникальными артефактами, и (2), если они не являются, не зависят от обнаружения новых SNAPSHOT. Используйте mvn dependency:purge-local-repository с подходящим включением для удаления старых SNAPSHOTs из вашего локального м2.