У Люка есть официальный ответ выше, но вот взлом, который я придумал:
if (Script.class.isAssignableFrom(clazz)
&& ((DefaultGrailsApplication) ApplicationHolder.getApplication()).
getResourceLoader().loadGroovySource(clazz.getName()).
getPath().contains("grails-app/foo")) {
return true;
}
Что, вероятно, имеет много проблем. Во-первых, он использует DefaultGrailsApplication, являющуюся реализацией GrailsApplication, поэтому мы нарушаем инкапсуляцию. Во-вторых, похоже, что loadGroovySource
возвращает значение NULL для встроенных артефактов (таких как метки), поэтому это может не сработать для таких вещей, как плагины и все, что распространяется в двоичной форме.
РЕДАКТИРОВАТЬ: похоже, он даже не будет работать в производстве. Вернуться к чертежной доске ...