В последнее время Apache Maven, похоже, имеет проблемы с кешированием. Выполнение чистой установки в наших проектах с использованием Windows Vista или Windows 7 иногда приводит к артефактам с теми же данными, что и предыдущая сборка, даже если новые файлы артефактов должны быть обновлены.
Есть ли способ очистить этот кеш, чтобы заставить maven всегда запускать чистую сборку локального артефакта, который должен быть построен?
В частности, у нас возникают проблемы с созданием webapp с помощью военного плагина. Версия Maven 3.0.3. Версия плагина войны - 2.1.1.
Удалите артефакты (или полное локальное репо) из c:\Users\username\.m2\repository
вручную.
Чтобы очистить локальный кеш, попробуйте использовать подключаемый модуль зависимостей.
mvn dependency:purge-local-repository
: Это попытка удалить файлы локального репозитория, но она всегда идет и заполняет локальный репозиторий после того, как все было удалено.mvn dependency:purge-local-repository -DreResolve=false
: Это позволяет избежать повторного разрешения зависимостей, но, по-видимому, по-прежнему идет в сеть время от времени.mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
: Это был добавлен Paweł Prażak и, похоже, хорошо работает. Я бы использовал третий, если вы хотите, чтобы локальное репо было опустошено, и первое, если вы просто хотите выбросить локальное репо и снова получить зависимости.Вы проверили/изменили параметры updatePolicy для ваших репозиториев в settings.xml
.
Этот элемент указывает, как часто должны возникать обновления. Maven будет сравнивать местную временную метку POM (хранящуюся в хранилище файл maven-metadata) на удаленный компьютер. Выбор: всегда, ежедневно (по умолчанию), интервал: X (где X - целое число в минутах) или никогда.
Попробуйте установить его на always
.
<updatePolicy>
в моем pom.xml, но есть <snapshotPolicy>
Это работает с Spring Tool Suite v 3.1.0.RELEASE, но я предполагаю, что он также доступен и на Eclipse.
После удаления артефактов вручную (как указано в пункте palacsint выше) в каталоге /username/.m2, повторно проиндексируйте файлы, выполнив следующие действия:
Перейдите в меню Windows- > Preferences- > Maven- > User Settings.
Нажмите кнопку "Reindex" рядом с текстовым полем "Локальный репозиторий". Нажмите "Применить", затем "ОК", и все готово.
Я бы сделал следующее:
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end
Флаги сообщают maven, что не пытались разрешить зависимости или попали в сеть. Удалите то, что вы видите локально.
И для хорошей меры игнорируйте ошибки (--fail-at-end
) до самого конца. Это иногда полезно для проектов, которые несколько перепутали набор зависимостей или полагаются на несколько испорченный внутренний репозиторий (это происходит.)
-U
который обновит артефакты?