Grails 1.3.5 использует Groovy 1.7.5. В этой версии Groovy GroovyScriptEngine.run(..)
вызывает следующие методы: createScript(String, Binding)
-> loadScriptByName(String)
-> isSourceNewer(ScriptCacheEntry)
.
isSourceNewer(ScriptCacheEntry)
определяется как (к сожалению, я не нашел подходящий исходный файл в сети):
protected boolean isSourceNewer(ScriptCacheEntry entry)
throws ResourceException {
// ...
for (String scriptName : entry.dependencies) {
// ...
return true; // without any further condition!
}
return false;
}
Который реализует (странную) логику «если скрипт имеет зависимости, он новее, чем кэшированный скрипт (и его необходимо перекомпилировать)». Это не то, что должен делать код; это должно быть решено по времени модификации.
В более новых версиях GroovyScriptEngine
это было исправлено (произошли значительные изменения в логике), но сейчас вам нужно создать подкласс GroovyScriptEngine
и перезаписать isSourceNewer(ScriptCacheEntry)
чтобы исправить логику самостоятельно.
Редактировать: ошибка была сообщена и исправлена в Groovy 1.7.6. - Попробуйте использовать Groovy 1.7.6 в папке Grails lib .