@Retention(value=SOURCE)
@Target(value={CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PARAMETER,TYPE})
public @interface GrabConfig
An example involving databases:
Another example involving XStream:@Grab
('mysql:mysql-connector-java:5.1.6'),@GrabConfig
(systemClassLoader=true) import groovy.sql.Sql def sql=Sql.newInstance("jdbc:mysql://localhost/test", "user", "password", "com.mysql.jdbc.Driver") println sql.firstRow('SELECT * FROM INFORMATION_SCHEMA.COLUMNS')
@Grapes
([@Grab
('com.thoughtworks.xstream:xstream:1.3.1'),@Grab
('xpp3:xpp3_min:1.1.4c'),@GrabConfig
(systemClassLoader=true, initContextClassLoader=true) ]) import com.thoughtworks.xstream.* class Staff { String firstname, lastname, position } def xstream = new XStream() def john1 = new Staff(firstname:'John', lastname:'Connor', position:'Resistance Leader') // write out to XML file new File("john.xml").withOutputStream { out -> xstream.toXML(john1, out) } // now read back in def john2 new File("john.xml").withInputStream { ins -> john2 = xstream.fromXML(ins) } println john2.dump()
Further information about customising grape behavior can be found on the Grape documentation page: http://groovy.codehaus.org/Grape.
Modifier and Type | Optional Element and Description |
---|---|
boolean |
initContextClassLoader
Set to true if you want the context classloader to be initialised to the classloader
of the current class or script.
|
boolean |
systemClassLoader
Set to true if you want to use the system classloader when loading the grape.
|
public abstract boolean systemClassLoader
public abstract boolean initContextClassLoader