Одна из самых удобных вещей в фреймворке grails - это поддержка внесения изменений "на лету". Для вьюшек (view) это работает всегда, если не отключить. Но вот перезагрузка контроллеров и сервисов может работать на редкость непредсказуемо. В моём случае, например, не работает вовсе.
Чтобы такой злополучной ситуации не возникало (да-да, я расширяю словарный запас в связи с запретом мата), можно немножко схитрить и помочь интеллектуально обделённому фрагменту IDE.
Если GRAILS_HOME установлена верно, подойдёт такая опция: -javaagent:${GRAILS_HOME}/lib/org.springframework/springloaded/jars/springloaded-1.2.0.RELEASE.jar -Xverify:none
Если нет, придётся прописать путь целиком. В моём случае это -javaagent:/opt/grails-2.4.0/lib/org.springframework/springloaded/jars/springloaded-1.2.0.RELEASE.jar -Xverify:none
Выглядит это всё примерно так:
Кому-то был ещё нужен ключ -reloading, но у меня всё и так работает.