В Maven, зачем запускать mvn clean?

Мне интересно, каково основное различие между запуском mvn compile и mvn compile mvn clean compile , в практичности.

Я понимаю, какова фактическая разница в том, что mvn clean compile удаляет все сгенерированные файлы и запускается с нуля, но зачем нам это делать? Я могу предположить, что mvn compile будет регенерировать файлы, если это необходимо, не так ли?

Одна вещь, которую я заметил в моем проекте, заключалась в том, что если бы вы удалили исходный файл, не выполнив clean , скомпилированный файл останется, что обычно не будет проблемой, но может быть, я полагаю.

Некоторые плагины требуют clean работы для правильной работы. Например (по крайней мере, в Maven 2), maven-war-plugin взрывает каждую зависимую WAR в существующее дерево каталогов. Это требует clean чтобы избавиться от файлов, которые были удалены из зависимых ВОЙН.

Другая проблема заключается в том, что при переименовании classа старая скомпилированная версия может зависать в дереве сборки и включаться в файлы JAR и т. Д. До тех пор, пока вы не запустите mvn clean .

Я могу предположить, что «mvn compile» будет восстанавливать файлы, если это необходимо, не так ли?

Для обычных плагинов это справедливое предположение. Однако, если вы используете плагин для генерации компонентов исходного кода, я бы внимательно посмотрел на документацию и там, где вы поместили сгенерированный исходный код. Например, существует несколько неподдерживаемых плагинов, целью которых является управление генератором кода Eclipse EMF.

Например: если вы переименуете class, предыдущая скомпилированная версия останется в target/classes до тех пор, пока вы не запустите clean . Это может быть совершенно безвредно, но это может вызвать проблемы, если оно автоопределяется сканированием classов и тому подобное.

на Maven, каждый раз, когда вы хотите скомпилировать, лучше всего использовать «mvn clean». он очищает существующие classы, которые вы компилировали из последней компиляции. если вы не хотите запускать 3 строки, просто выполните «mvn test» после «mvn clean». вам не обязательно всегда делать «mvn compile».

Если вы не выполняете чистую компиляцию, это означает, что вы все же разрешаете работать с некоторыми устаревшими classами. Если ваш модуль предполагает перейти на новый class, то даже вы пропустили это, не будет никакой ошибки компиляции из-за того, что старый class существует в target / classes. Это останется незамеченным, пока тот же модуль не будет построен в каком-либо другом месте / машине с чистой целью компиляции.

  • java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
  • Наследование наследования проекта Maven - нужно ли указывать родительскую версию?
  • Не удалось решить версию для org.apache.maven.archetypes
  • Создание двух исполняемых банок с использованием maven-assembly-plugin
  • Как работает префикс плагина Maven? Почему это разрешает «поиск», но не «причал»?
  • JavaFX и maven: NullPointerException: требуется место
  • Развертывание проекта Maven throws java.util.zip.ZipException: недопустимый заголовок LOC (плохая подпись)
  • Можно ли создать проект java только один раз, используя eclipse и поделиться?
  • Maven за автогенерированным прокси
  • java.lang.ClassFormatError: Отсутствует атрибут кода в методе, который не является родным или абстрактным в файле classа javax / faces / webapp / FacesServlet
  • Структура Maven и JSF webapp, где именно для размещения ресурсов JSF
  • Interesting Posts

    Как перемещать и изменять размер формы без границы?

    Получить * все * атрибуты CSS с помощью jQuery

    Есть ли способ включить подключение к удаленному рабочему столу с паролем без установки пароля в ОС?

    Есть ли 64-битное программное обеспечение для Windows, которое гораздо предпочтительнее 32-разрядной копии в 64-разрядной ОС?

    Многострочные метки оси x в линейной диаграмме ggplot

    Ошибка загрузки библиотеки Cygwin

    Выполнение задач параллельно

    Получить общее количество документов с помощью MongoDB при использовании лимита

    Excel vba: копировать строки, если данные соответствуют значениям в столбце на другом листе

    Использование открытого ключа из authorized_keys с защитой Java

    Как импортировать зависимость Maven в Android Studio / IntelliJ?

    regex для приема только персидских символов

    Ошибка обновления Windows 8.1 с кодом ошибки 0x80070652

    Что означает тильда в выражении?

    Как включить удаленный рабочий стол в Red Hat?

    Давайте будем гением компьютера.