@Retention(value=SOURCE) @Target(value={CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PARAMETER,TYPE}) public @interface Grab
Some examples:
 @Grab(group='commons-lang', module='commons-lang', version='2.4')
 import org.apache.commons.lang.WordUtils
 println "Hello ${WordUtils.capitalize('world')}"
 
 Or using the compact Gradle-inspired syntax:
 
 @Grab('commons-lang:commons-lang:2.4')
 import org.apache.commons.lang.WordUtils
 println "Hello ${WordUtils.capitalize('world')}"
 
 or the same thing again using the Ivy-inspired syntax variant:
 
 @Grab('commons-lang#commons-lang;2.4')
 import org.apache.commons.lang.WordUtils
 println "Hello ${WordUtils.capitalize('world')}"
 
 Further information such as where artifacts are downloaded to, how to add additional resolvers,
 how to customise artifact resolution etc., can be found on the Grape documentation page:
 http://groovy-lang.org/grape.html.| Modifier and Type | Optional Element and Description | 
|---|---|
| boolean | changingDefaults to  falsebut set totrueif the dependency artifacts may change without a corresponding
 revision change. | 
| String | classifierThe classifier if in use, e.g.: "jdk14" | 
| String | confThe configuration if in use (normally only used by internal ivy repositories). | 
| String | extThe extension of the artifact (normally safe to leave at default value of "jar" but other values like "zip"
 are sometimes useful). | 
| boolean | forceDefaults to  falsebut set totrueto indicate to the underlying Ivy conflict manager that this
 dependency should be forced to the given revision. | 
| String | groupThe organisation or group, e.g.: "org.apache.ant". | 
| boolean | initClassBy default, when a  @Grabannotation is used, aGrape.grab()call is added
 to the static initializers of the class the annotatable node appears in. | 
| String | moduleThe module or artifact, e.g.: "ant-junit". | 
| boolean | transitiveDefaults to  truebut set tofalseif you don't want transitive dependencies also to be downloaded. | 
| String | typeThe type of the artifact (normally safe to leave at default value of "jar" but other values like "sources" and "javadoc" are sometimes useful). | 
| String | valueAllows a more compact convenience form in one of two formats with optional appended attributes. | 
| String | versionThe revision or version, e.g.: "1.7.1". | 
public abstract String group
public abstract String module
public abstract String version
public abstract String classifier
public abstract boolean transitive
true but set to false if you don't want transitive dependencies also to be downloaded.
 You may then need additional @Grab statements for any required dependencies.public abstract boolean force
false but set to true to indicate to the underlying Ivy conflict manager that this
 dependency should be forced to the given revision. Otherwise, depending on the conflict manager in play, a later
 compatible version might be used instead.public abstract boolean changing
false but set to true if the dependency artifacts may change without a corresponding
 revision change. Not normally recommended but may be useful for certain kinds of snapshot artifacts.
 May reduce the amount of underlying Ivy caching. Proper behavior may be dependent on the resolver in use.public abstract String conf
@GrabConfig annotation
 to point to that repo.public abstract String ext
public abstract String type
public abstract String value
 You can choose either format but not mix-n-match:
 group:module:version:classifier@ext (where only group and module are required)
 group#module;version[confs] (where only group and module are required and confs,
 if used, is one or more comma separated configuration names)
 In addition, you can add any valid Ivy attributes at the end of your string value using
 semi-colon separated name = value pairs, e.g.:
 @Grab('junit:junit:*;transitive=false')
 @Grab('group=junit;module=junit;version=4.8.2;classifier=javadoc')
public abstract boolean initClass
@Grab annotation is used, a Grape.grab() call is added
 to the static initializers of the class the annotatable node appears in.
 If you wish to disable this, add initClass=false to the annotation.