public @interface Grapes
For example:
@Grapes([@Grab(module='m1'), @Grab(module='m2')])
class AnnotatedClass { ... }
You can override an implicit transitive dependency by providing an explicit one. E.g. htmlunit 2.6 normally uses xerces 2.9.1 but you can get 2.9.0 as follows:
Obviously, only do this if you understand the consequences.@Grapes
([@Grab
('net.sourceforge.htmlunit:htmlunit:2.6'),@Grab
('xerces#xercesImpl;2.9.0') ])
You can also remove transitive dependencies altogether (provided you
know you don't need them) using @GrabExclude
.
For example, here is how we would not grab the logkit
and
avalon-framework
transitive dependencies for Apache POI:
It is also sometimes also useful to use@Grapes
([@Grab
("org.apache.poi#poi;3.5-beta6"),@GrabExclude
("logkit:logkit"),@GrabExclude
("avalon-framework#avalon-framework") ]) import org.apache.poi.hssf.util.CellReference assert new CellReference(0, 0, false, false).formatAsString() == 'A1' assert new CellReference(1, 3).formatAsString() == '$D$2'
@GrabConfig
to further adjust how dependencies
are grabbed. See @GrabConfig
for further information.Modifier and Type | Required Element and Description |
---|---|
Grab[] |
value |
Modifier and Type | Optional Element and Description |
---|---|
boolean |
initClass
This will be pushed into the child grab annotations if the value is not
set in the child annotation already.
|
public abstract Grab[] value
public abstract boolean initClass
This results in an effective change in the default value, which each @Grab can still override