Как вы очищаете кеш Apache Maven?

В последнее время Apache Maven, похоже, имеет проблемы с кешированием. Выполнение чистой установки в наших проектах с использованием Windows Vista или Windows 7 иногда приводит к артефактам с теми же данными, что и предыдущая сборка, даже если новые файлы артефактов должны быть обновлены.

Есть ли способ очистить этот кеш, чтобы заставить maven всегда запускать чистую сборку локального артефакта, который должен быть построен?

В частности, у нас возникают проблемы с созданием webapp с помощью военного плагина. Версия Maven 3.0.3. Версия плагина войны - 2.1.1.

Ответ 1

Удалите артефакты (или полное локальное репо) из c:\Users\username\.m2\repository вручную.

Ответ 2

Чтобы очистить локальный кеш, попробуйте использовать подключаемый модуль зависимостей.

  • mvn dependency:purge-local-repository: Это попытка удалить файлы локального репозитория, но она всегда идет и заполняет локальный репозиторий после того, как все было удалено.
  • mvn dependency:purge-local-repository -DreResolve=false: Это позволяет избежать повторного разрешения зависимостей, но, по-видимому, по-прежнему идет в сеть время от времени.
  • mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false: Это был добавлен Paweł Prażak и, похоже, хорошо работает. Я бы использовал третий, если вы хотите, чтобы локальное репо было опустошено, и первое, если вы просто хотите выбросить локальное репо и снова получить зависимости.

Ответ 3

Вы проверили/изменили параметры updatePolicy для ваших репозиториев в settings.xml.

Этот элемент указывает, как часто должны возникать обновления. Maven будет сравнивать местную временную метку POM (хранящуюся в хранилище файл maven-metadata) на удаленный компьютер. Выбор: всегда, ежедневно (по умолчанию), интервал: X (где X - целое число в минутах) или никогда.

Попробуйте установить его на always.

Ответ 4

Это работает с Spring Tool Suite v 3.1.0.RELEASE, но я предполагаю, что он также доступен и на Eclipse.

После удаления артефактов вручную (как указано в пункте palacsint выше) в каталоге /username/.m2, повторно проиндексируйте файлы, выполнив следующие действия:

Перейдите в меню Windows- > Preferences- > Maven- > User Settings.

Нажмите кнопку "Reindex" рядом с текстовым полем "Локальный репозиторий". Нажмите "Применить", затем "ОК", и все готово.

Ответ 5

Я бы сделал следующее:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end

Флаги сообщают maven, что не пытались разрешить зависимости или попали в сеть. Удалите то, что вы видите локально.

И для хорошей меры игнорируйте ошибки (--fail-at-end) до самого конца. Это иногда полезно для проектов, которые несколько перепутали набор зависимостей или полагаются на несколько испорченный внутренний репозиторий (это происходит.)