Подтвердить что ты не робот

Почему Maven mvn не работает в первый раз?

Девять раз из десяти, когда я запускаю mvn clean в моих проектах, я испытываю ошибку сборки. Я должен выполнить mvn clean несколько раз, пока ошибка сборки не исчезнет. Кто-нибудь еще испытывает это? Есть ли способ исправить это в Maven? Если нет, как вы обходите это? Я написал файл bat, который удаляет целевые папки и работает хорошо, но это не практично, когда вы работаете над несколькими проектами. Я использую Maven 2.2.1.

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to delete directory: C:\Documents and Settings\user\My Documents\software-developm
ent\a\b\c\application-domain\target. Reason: Unable to delete directory C:\Documen
ts and Settings\user\My Documents\software-development\a\b\c\application-domai
n\target\classes\com\a\b

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6 seconds
[INFO] Finished at: Fri Oct 23 15:22:48 EDT 2009
[INFO] Final Memory: 11M/254M
[INFO] ------------------------------------------------------------------------
4b9b3361

Ответ 1

Возможно, ваша IDE или какой-либо другой процесс удерживается в папке "target" и не позволяет maven удалить ее.

Ответ 2

В основном это вызвано индексированием Windows. Исключение проблемы с исключением целевых или .jar расширений из индексации. Моя лучшая практика заключается в исключении расширения .jar.

Чтобы исключить целевые файлы:

  • Нажмите значок Windows/меню "Пуск"
  • Введите индексирование в поле поиска и нажмите Параметры индексирования
  • Затем нажмите кнопку Изменить, чтобы исследовать индексацию каталогов.
  • Удалите проверки Целевых папок.

Чтобы исключить все .jar файлы:

  • Нажмите значок Windows/меню "Пуск"
  • Введите индексирование в поле поиска и нажмите Параметры индексирования
  • Затем нажмите кнопку Дополнительно.
  • Перейдите на вкладку Типы файлов.
  • В списке найдите jar и снимите флажок.

Ответ 3

Отключение службы поиска окон на Win7 работало для меня

Ответ 4

Проблема заключается в том, что eclipse постоянно читает каталоги и артефакты в вашем проекте maven и неизбежно открывает один из них при очистке.

Лучший подход - запустить maven clean из плагина eclipse (я использую m2eclipse, и это, похоже, работает хорошо).

Другим подходом, который работает, является запуск mvn clean с флагом maven.clean.failOnError, установленным на false. Если вы запускаете его дважды, как правило, этого достаточно, чтобы все работало правильно, например

mvn clean -Dmaven.clean.failOnError=false && mvn clean -Dmaven.clean.failOnError=false

Вероятно, вы захотите отключить eclipse "Build automatically" из меню проекта, когда вы это сделаете.

Ответ 5

Часто вы сталкиваетесь с этой проблемой, когда в Windows, поскольку Windows не делает (обычно), позволяет удалить файл, который используется. Помимо (больно), проходящего через всю вашу конфигурацию Maven, ваш лучший выбор - просто не строить на Windows (например, использовать Linux/Solaris/любую виртуальную машину).

Ответ 6

Ниже приведены мои выводы -

Помимо IDE, держащейся за банку, иногда у вас будет некоторый процесс Java, который также может вызвать это. Найдите в диспетчере задач любой процесс " java.exe"/"javaw.exe" и уничтожьте его.

Это помогло мне решить это время от времени.

Ответ 7

Я предполагаю, что вы открываете файлы в текстовом редакторе или оставляете оболочку открытой в целевом каталоге. Если какой-либо процесс имеет блокировку файла или папки, Windows не позволит вам удалить его.

Если вы запустите инструмент, например wholockme, вы сможете увидеть, какой процесс блокирует файл.

Ответ 9

Основной причиной является служба индексирования Windows, сервер приложений или среда IDE, хранящая JAR файл. Лучшее решение - отключить службу поиска Windows или исключить JAR файлы из индексации.

Другой (несовершенный) вариант mvn clean || mvn clean. Символ двойной трубы выполняет вторую команду только в том случае, если первый из них не работает.

Смотрите Освободить блокировки общих файлов Windows, чтобы узнать, как найти и удалить блокировки записи Windows (рекомендуется использовать ProcessExplorer или Unlocker).

Ответ 10

У меня была та же проблема, что и сборки из Hudson.

Используя handle.exe(из Sysinternals), я обнаружил, что задача java.exe имеет активный дескриптор файла в сгенерированный файл jar.

Если я убью эту задачу, следующая сборка будет успешной. Но следующая сборка после этой успешной сборки снова проваливается с той же ошибкой.

Даже если задача сборки выполнена успешно, она, похоже, не заканчивается должным образом и сохраняет файлы открытыми.

Я начинаю с Хадсоном, и сначала у меня не было этой проблемы. Затем я играл с некоторыми плагинами, и позже эта проблема возникла и была воспроизведена.

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

Надеюсь, это немного поможет...

Ответ 11

Попробуйте отключить службу индексирования Windows.

Ответ 12

У меня была та же проблема. Я закрыл eclipse и посмотрел на запущенные процессы в диспетчере задач и увидел, что один из них называется "Java.exe", который обычно не запускается, поэтому я закончил его, а затем снова запустил "mvn clean". Он должен правильно удалить файл и работать правильно.

Ответ 13

В моем случае есть java-процесс, который выполняет surefirebooter.jar, который является плагином для выполнения теста maven JUnit. Таким образом, вы можете просто открыть диспетчер задач и убить Java-процесс.

Ответ 14

Это потому, что вы блокируете целевой каталог (открываете файл или входите в (под) каталог целевого каталога, или любой другой процесс/приложение использует файл из этого каталога). Если команда delete Windows также жалуется, что это не ошибка maven.

Ответ 15

Я обнаружил, что разработка Java с Maven на Window 7 борется, когда исходный код находится на диске C. Перемещение моего кода на другой диск работает. Даже логический диск будет работать, диск не обязательно должен быть другим физическим жестким диском.

Ответ 16

Если вы не хотите изменять параметры индексирования Windows, вы можете просто приостановить его.

Ответ 17

вы должны закрыть все файлы в целевом, для меня я использую M2eclipse напрямую, лучше также вы можете попробовать mvn clean -Dmaven.clean.failOnError = false

Ответ 18

Приложение, которое вы используете, должно быть остановлено. Похоже, приложение все еще работает, пока вы пытаетесь очистить приложение.

Ответ 19

Решение перезапускает окна 7. Это помогает освободить ресурсы.