diff --git a/grails/src/commons/org/codehaus/groovy/grails/cli/support/GrailsBuildEventListener.java b/grails/src/commons/org/codehaus/groovy/grails/cli/support/GrailsBuildEventListener.java index fa1037acc..71009affa 100644 --- a/grails/src/commons/org/codehaus/groovy/grails/cli/support/GrailsBuildEventListener.java +++ b/grails/src/commons/org/codehaus/groovy/grails/cli/support/GrailsBuildEventListener.java @@ -66,7 +66,7 @@ protected void loadEventHooks(BuildSettings buildSettings) { if(buildSettings!=null) { loadEventsScript( findEventsScript(new File(buildSettings.getUserHome(),".grails/scripts")) ); loadEventsScript( findEventsScript(new File(buildSettings.getBaseDir(), "scripts")) ); - + for (Resource pluginBase : GrailsPluginUtils.getPluginDirectories()) { try { loadEventsScript( findEventsScript(new File(pluginBase.getFile(), "scripts")) ); @@ -81,24 +81,29 @@ protected void loadEventHooks(BuildSettings buildSettings) { public void loadEventsScript(File eventScript) { if(eventScript!=null) { try { - Script script = (Script) classLoader.parseClass(eventScript).newInstance(); - script.setBinding(new Binding(this.binding.getVariables()) { - @Override - public void setVariable(String var, Object o) { - final Matcher matcher = EVENT_NAME_PATTERN.matcher(var); - if(matcher.matches() && (o instanceof Closure)) { - String eventName = matcher.group(1); - List hooks = globalEventHooks.get(eventName); - if(hooks == null) { - hooks = new ArrayList(); - globalEventHooks.put(eventName, hooks); + Class scriptClass = classLoader.parseClass(eventScript); + if(scriptClass != null) { + Script script = (Script) scriptClass.newInstance(); + script.setBinding(new Binding(this.binding.getVariables()) { + @Override + public void setVariable(String var, Object o) { + final Matcher matcher = EVENT_NAME_PATTERN.matcher(var); + if(matcher.matches() && (o instanceof Closure)) { + String eventName = matcher.group(1); + List hooks = globalEventHooks.get(eventName); + if(hooks == null) { + hooks = new ArrayList(); + globalEventHooks.put(eventName, hooks); + } + hooks.add((Closure) o); } - hooks.add((Closure) o); + super.setVariable(var, o); } - super.setVariable(var, o); - } - }); - script.run(); + }); + script.run(); + } else { + System.err.println("Could not load event script (script may be empty): " + eventScript); + } } catch (Throwable e) { @@ -108,7 +113,6 @@ public void setVariable(String var, Object o) { } } - } protected File findEventsScript(File dir) {