При использовании Emacs для редактирования исходного файла Grails Emacs временно создает скрытые файлы блокировки записи рядом с исходным файлом. Например, если редактировать com/example/MyController
, можно увидеть:
rob@machine:~/app$ ls -la grails-app/controllers/com/example/
total 28
drwxrwxr-x 3 rob rob 4096 2011-12-03 13:38 ..
-rw-rw-r-- 1 rob rob 3883 2012-01-03 13:57 MyController.groovy
lrwxrwxrwx 1 rob rob 26 2012-01-04 09:32 .#MyController.groovy -> rob@machine.2136:1324674574
Когда этот файл создается во время run-app
, Grails замечает его и пытается скомпилировать, что часто приводит к ошибкам компиляции в журналах консоли run-app
:
| Error 2012-01-04 09:32:51,207 [Thread-38] ERROR plugins.AbstractGrailsPluginManager - Plugin [controllers:2.0.0] could not reload changes to file [/home/rob/app/grails-app/controllers/com/example/.#MyController.groovy]: Dynamic method is<Artefact>Class(artefactClass) requires a single Class parameter
Message: Dynamic method is<Artefact>Class(artefactClass) requires a single Class parameter
Line | Method
->> 629 | doCall in SpringSecurityCoreGrailsPlugin$_closure5
Возможно, это происходит только при использовании плагина core-security-core, но я не проверял его без установленного плагина.
Я полагаю, что это происходит только в Grails 2.0; Я никогда не наблюдал это в 1.3.7 или ранее.
Есть ли способ заставить Grails игнорировать эти файлы при автоматической перекомпиляции во время run-app
? Общий ответ для управления тем, что файлы делают и не загружаются, был бы идеальным.
Авторитетный ответ "нет, это невозможно" также приемлем для меня. Я понимаю, что это может быть просто невозможно через конфигурацию, и в этом случае я, вероятно, открою расширение JIRA.