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

нтересно, в чем основная разница между бегомmvn compile а такжеmvn clean compile есть, на практике.

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

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

 Blauhirn20 мая 2018 г., 07:11
Особенно полезно при проверке и запуске предыдущего коммита или после массового копирования файлов.
 Marius K22 июн. 2012 г., 11:24
Интересный вопрос. Я чувствую, что при использовании «make» для приложений на языке c / c ++ не часто требуется очистка, поскольку она обрабатывает зависимости между исходными файлами. Я думаю, что он обрабатывает случай удаления / переименования тоже.

Ответы на вопрос(3)

Решение Вопроса

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

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

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

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

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

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

 GabrielOshiro21 янв. 2019 г., 23:49
Может быть, я не понял ваш ответ, но кажется, что вы можете бежатьmvn test чтобы избежать шага компиляцииcompile, тем не мениеmvn test будет управлять фазойcompile слишком

Ваш ответ на вопрос