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

Что делает "grails clean" script на самом деле?

Мне интересна команда grails clean. Как только я импортировал неправильный пакет в класс домена, он был java.util.regex. Я использовал его для выполнения команды замены регулярных выражений, но оказывается, что все было неизменным, так что я предположил, что мое регулярное выражение ошибочно. Но я оставил его там для будущей утонченности.

Веб-приложение в моем локальном хосте нормально функционировало, но затем другие программисты сказали мне, что они получили компиляцию ошибок, когда пытались скомпилировать мой код. Я закрываю grails, а затем снова запускаю его, но он все равно работает правильно. Только после запуска grails clean появилась ошибка компиляции.

Итак, кажется, что приложение просто проигнорировало мои изменения в первую очередь. В документации они говорят:

В случае, если ваше приложение Grails был привинчен и загадочные сообщения об ошибках:

grails clean

Я немного запутался в этой "загадочной" вещи. Итак, что делает grails clean на самом деле? Какие ресурсы не будут скомпилированы снова, если не будет вызван grails clean?

4b9b3361

Ответ 1

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

Проблема, которую вы видите, связана с инкрементной компиляцией. Он довольно надежный в целом, но может быть неудачным с Java, и, к сожалению, с Groovy, скорее всего, это динамический язык. Трудно определить полный диапазон изменений в одном классе на всех других классах, а иногда и пропущенные изменения. Если вам повезло, очевидно, что что-то не так, но иногда это может занять некоторое время, задаваясь вопросом, почему происходит какое-то серьезное странное поведение.

Итак, лучше всего делать полную компиляцию, будь то чистая Java или сочетание Groovy и Java. Поскольку это дорого (особенно с большими проектами), достаточно использовать инкрементную компиляцию в максимально возможной степени, но иногда принудительно полностью компилировать с помощью grails clean.

Ответ 2

grails clean

Команда clean удаляет все скомпилированные ресурсы из приложения. но не временные файлы.

grails clean-all

Команда clean-all удаляет все скомпилированные ресурсы, а также рабочий каталог, который содержит временные файлы, относящиеся к проекту.

Так как Groovy является скомпилированным языком, как, например, с Java, иногда полезно очищать старые экземпляры классов и обеспечивать правильную компиляцию. Также неплохо запустить эти сценарии перед запуском тестов или созданием WAR файла, чтобы обеспечить полную компиляцию.