retrieve


The retrieve task copies resolved dependencies anywhere you want in your file system.

This is a post resolve task, with all the behaviour and attributes common to all post resolve tasks.

since 1.4 This task can even be used to synchronize the destination directory with what should actually be in according to the dependency resolution. This means that by setting sync="true", Ivy will not only copy the necessary files, but it will also remove the files which do not need to be there.

The synchronisation actually consists in deleting all filles and directories in the root destination directory which are not required by the retrieve.

The root destination directory is the the directory denoted by the first level up the first token in the destination pattern.
Example:
pattern: lib/[conf]/[artifact].[ext]
root: lib

since 1.4 The behaviour is like this when 'useOrigin=true':
  • if the artifact is not local, the location from within the cache is used
  • if the artifact is a local artifact, it's original location is used
Note that if resolve has been called separately, the copy to the cache may have occur normally if useOrigin was not set when calling resolve. If resolve has not been called, it will be called automatically with useOrigin set to the value specified on this task.
AttributeDescriptionRequired
patternthe pattern to use to copy the dependencies No. Defaults to ${ivy.retrieve.pattern}
ivypatternthe pattern to use to copy the ivy files of dependencies since 1.3 No. Dependencies ivy files are not retrieved by default.
confa comma separated list of the configurations to retrieve No. Defaults to the configurations resolved by the last resolve call, or * if no resolve was explicitly called
synctrue to synchronize the destination, false to just make a copy since 1.4 No. Defaults to false
typecomma separated list of accepted artifact types since 1.4 No. All artifact types are accepted by default.
symlinktrue to create symbolic links, false to copy the artifacts. The destination of the symbolic links depends on the value of the useOrigin attribute (since 2.0)No. Defaults to false
settingsRefA reference to the ivy settings that must be used by this task (since 2.0)No, 'ivy.instance' is taken by default.

Examples

<ivy:retrieve />
Retrieves dependencies using default parameters. This usually retrieves all the dependencies of the last resolve call to a lib directory.


<ivy:retrieve pattern="${lib.dir}/[conf]/[artifact].[ext]"/>
Retrieves all dependencies of the last resolve call to a lib directory, dependencies being separated in directories named by configuration, each conf directory containing corresponding artifacts without the revision.
For instance, if the ivy file declares two configurations default and test, the resulting lib dir could look like this:
lib
default
commons-lang.jar
commons-logging.jar
test
junit.jar
Note that if a dependency is required in the two configurations, it will be copied in the two directories. The download of the dependency is however only made once at resolve time.


<ivy:retrieve pattern="${lib.dir}/[conf]/[artifact].[ext]" sync="true" />
Same as before, but with synchronisation enabled.

For instance, if the ivy file declares two configurations default and test, the resulting lib dir could look like this:
lib
default
commons-lang.jar
commons-logging.jar
test
junit.jar
And now suppose commons-logging is no longer part of the dependencies of the default configuration, then a new call to retrieve will result in:
lib
default
commons-lang.jar
test
junit.jar
With no synchronisation, commons-logging would not have been removed by the call.


<ivy:retrieve pattern="${lib.dir}/[type]/[artifact]-[revision].[ext]" conf="runtime"/>
Retrieves only the dependencies of the
runtime
configuration in directories named by artifact type. The resulting lib dir could look like this:
lib
jar
commons-lang-1.0.jar
looks-1.1.jar
source
looks-1.1.zip

<ivy:retrieve organisation="foo" module="bar" inline="true" pattern="${my.install.dir}/[artifact].[ext]"/>
Resolves and retrieve the latest version of the module bar and its dependencies in the directory pointed by ${my.install.dir}.