diff --git a/spring-boot-cli/pom.xml b/spring-boot-cli/pom.xml index 436779bd7d8..9848d2826b1 100644 --- a/spring-boot-cli/pom.xml +++ b/spring-boot-cli/pom.xml @@ -205,6 +205,36 @@ + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + [1.7,) + + run + + + + + + + + + + + + diff --git a/spring-boot-cli/samples/jms.groovy b/spring-boot-cli/samples/jms.groovy index df2a62d4752..998bbc450b6 100644 --- a/spring-boot-cli/samples/jms.groovy +++ b/spring-boot-cli/samples/jms.groovy @@ -1,8 +1,7 @@ package org.test @Grab("org.apache.activemq:activemq-all:5.4.0") -@Grab("org.apache.activemq:activemq-pool:5.4.0") - +@Grab("activemq-pool") import java.util.concurrent.CountDownLatch @Log diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java index e3be5742a25..18359fc60c6 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java @@ -31,8 +31,11 @@ import java.util.List; import java.util.ServiceLoader; import org.codehaus.groovy.ast.ASTNode; +import org.codehaus.groovy.ast.AnnotatedNode; import org.codehaus.groovy.ast.AnnotationNode; +import org.codehaus.groovy.ast.ClassCodeVisitorSupport; import org.codehaus.groovy.ast.ClassNode; +import org.codehaus.groovy.ast.ImportNode; import org.codehaus.groovy.ast.ModuleNode; import org.codehaus.groovy.ast.expr.ConstantExpression; import org.codehaus.groovy.ast.expr.Expression; @@ -263,13 +266,31 @@ public class GroovyCompiler { for (ASTNode node : nodes) { if (node instanceof ModuleNode) { ModuleNode module = (ModuleNode) node; - for (ClassNode classNode : module.getClasses()) { - for (AnnotationNode annotationNode : classNode.getAnnotations()) { - if (isGrabAnnotation(annotationNode)) { - transformGrabAnnotationIfNecessary(annotationNode); - } - } + for (ImportNode importNode : module.getImports()) { + visitAnnotatedNode(importNode); } + for (ClassNode classNode : module.getClasses()) { + visitAnnotatedNode(classNode); + classNode.visitContents(new ClassCodeVisitorSupport() { + @Override + protected SourceUnit getSourceUnit() { + return source; + } + + @Override + public void visitAnnotations(AnnotatedNode node) { + visitAnnotatedNode(node); + } + }); + } + } + } + } + + private void visitAnnotatedNode(AnnotatedNode annotatedNode) { + for (AnnotationNode annotationNode : annotatedNode.getAnnotations()) { + if (isGrabAnnotation(annotationNode)) { + transformGrabAnnotationIfNecessary(annotationNode); } } }