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 | Method and Description |
|---|---|
| public boolean | initClass()
This will be pushed into the child grab annotations if the value is not set in the child annotation already. |
| public Grab[] |
| initClass | back to summary |
|---|---|
| public boolean initClass() This will be pushed into the child grab annotations if the value is not set in the child annotation already. This results in an effective change in the default value, which each @Grab can still override | |
| value | back to summary |
|---|---|
| public Grab[] value() | |