blob: 32b8954ab8b8b4772a65174e5439594f3d57aec7 [file] [log] [blame]
------
Task and Type Reference
------
Brett Porter
Hervé Boutemy
------
2008-07-17
------
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html
{Task} Reference
~~ TODO: Can the task and type classes be generated using Modello?
~~ If so, the reference documentation can be generated from the model.
* <<<{dependencies}>>>
This task will check if any of the specified dependencies, and their dependencies are missing or updated, and
download them if necessary. The dependencies will be made available as a fileset or path reference.
The dependencies task accepts the following attributes:
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<Attribute>> | <<Description>> | <<Required>> | << Since >> |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<filesetId>>> | The reference ID to store a fileset under, for the resolved dependencies. | No | |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<javadocFilesetId>>> | The reference ID to store a fileset under, for the javadoc attachments of the resolved dependencies. | No | 2.0.9 |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<pathId>>> | The reference ID to store a path under, for the resolved dependencies. | No | |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<pomRefId>>> | The reference ID from a POM datatype defined earlier in the build file. | Yes, either this or a <<<pom>>> nested element or one or more <<<dependency>>> nested elements | |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<settingsFile>>> | The settings file to use. Defaults to <<<$\{user.home\}/.ant/settings.xml>>> or if that doesn't exist <<<$\{user.home\}/.m2/settings.xml>>>. | No | 2.0.6 |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<sourcesFilesetId>>> | The reference ID to store a fileset under, for the sources attachments of the resolved dependencies. | No | 2.0.6 |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<type>>> | A comma separated list of artifact types to be retrieved. By default all artifact types will be included. | No | |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<pathType>>> | A comma separated list of artifact types to be added to the path object. By default all artifact types will be included. | No | |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<useScope>>> | Follows the Maven scope behaviour. Can be set to <<<compile>>>, <<<runtime>>>, or <<<test>>>. If no value is provided, all scopes will be included. | No | |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<scopes>>> | A comma separated list of specific scopes to be retrieved. If no value is provided, all scopes will be included. | No | 2.0.10 |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<versionsId>>> | The property ID to store the versions of the resolved dependencies, for use by a {{{./reference.html#VersionMapper} <<<VersionMapper>>>}}. | No | 2.0.7 |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<cacheDependencyRefs>>> | If set to true, will generate an Ant build file that contains properties and fileset references for the dependencies. Then try to load information from this file in subsequent builds. Default is <false>. | No | 2.1.0 |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<addArtifactFileSetRefs>>> | <<Deprecated>> Add a fileset for each resolved dependency. The fileset has an id of <<<groupId:artifactId:type[:classifier]>>>. Default is <true> (was <false> in 2.0.10). | No | 2.0.10 |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
| <<<verbose>>> | <<Deprecated>> in version 2.1.0. Use the Ant command line -v option for verbose output. | No | |
*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
The task can include the <<<dependency>>> nested type, in addition to the other shared types
{{{./reference.html#localRepository} <<<localRepository>>>}}, {{{./reference.html#pom} <<<pom>>>}} and
{{{./reference.html#remoteRepository} <<<remoteRepository>>>}}, which will be explained later.
You must include either
a single <<<pom>>> element
or a <<<pomRefId>>> attribute
or one or more <<<dependency>>> elements.
If you have set a value for <<<versionsId>>>, you can later use {{{./reference.html#versionMapper} <<<VersionMapper>>>}}.
<(since 2.0.8)> For each dependency resolved, the property <<<groupId:artifactId:type[:classifier]>>> is defined pointing to
the corresponding file.
** <<<dependency>>>
Dependency definition is done in Maven Ant Tasks exactly like it is done in Maven: it is summarized here, but you can look at
{{{http://maven.apache.org/ref/current/maven-model/maven.html#class_dependency} the reference documentation}} for more information.
*------------------+--------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*------------------+--------------------------------------------------------+--------------+
| <<<groupId>>> | The group ID of the dependency. | Yes |
*------------------+--------------------------------------------------------+--------------+
| <<<artifactId>>> | The artifact ID of the dependency. | Yes |
*------------------+--------------------------------------------------------+--------------+
| <<<version>>> | The version of the dependency. | Yes |
*------------------+--------------------------------------------------------+--------------+
| <<<type>>> | The type of the dependency. The default is <<<jar>>>. | No |
*------------------+--------------------------------------------------------+--------------+
| <<<classifier>>> | The classifier of the dependency. | No |
*------------------+--------------------------------------------------------+--------------+
| <<<scope>>> | The scope of the usage of the dependency, which {{{http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope} affects which of that dependency's own dependencies are also retrieved}}. This can be <<<compile>>> (default), <<<runtime>>>, <<<test>>>, <<<provided>>> or <<<system>>>. | No |
*------------------+--------------------------------------------------------+--------------+
| <<<systemPath>>> | FOR SYSTEM SCOPE ONLY. This specifies the path on the filesystem for this dependency. | No |
*------------------+--------------------------------------------------------+--------------+
The dependency can also nest multiple <<<exclusion>>> elements.
*** Note about system scope
Dependencies that use the <<<system>>> scope specify a path on the local system that may be outside
of the local maven repository. An Ant fileset only allows a single base directory, so these
dependencies will not be included in the generated fileset for resolved dependencies. They will, however, be included
in the path object.
*** <<<exclusion>>>
An exclusion can be used to prevent the resolution of a particular artifact in the tree of the <<<dependency>>>.
*------------------+--------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*------------------+--------------------------------------------------------+--------------+
| <<<groupId>>> | The group ID of the dependency to exclude. | Yes |
*------------------+--------------------------------------------------------+--------------+
| <<<artifactId>>> | The artifact ID of the dependency to exclude. | Yes |
*------------------+--------------------------------------------------------+--------------+
* <<<{install}>>>, <<<{deploy}>>>
These tasks will install/deploy the given file into the local/remote repository. It is stored using the information in the supplied
POM. Multiple artifacts can be attached during install/deploy using <<<attach>>> elements.
*---------------------+--------------------------------------------------------------------------+-------------------------------------------------+-------------+
| <<Attribute>> | <<Description>> | <<Required>> | << Since >> |
*---------------------+--------------------------------------------------------------------------+-------------------------------------------------+-------------+
| <<<file>>> | The file to install in the repository. | Yes, unless an attached artifact is specified | |
*---------------------+--------------------------------------------------------------------------+-------------------------------------------------+-------------+
| <<<pomRefId>>> | The reference ID from a POM datatype defined earlier in the build file. | Yes, unless a <<<pom>>> nested element is provided instead | |
*---------------------+--------------------------------------------------------------------------+-------------------------------------------------+-------------+
| <<<settingsFile>>> | The settings file to use. Defaults to <<<$\{user.home\}/.ant/settings.xml>>> or if that doesn't exist <<<$\{user.home\}/.m2/settings.xml>>>. | No | 2.0.6 |
*---------------------+--------------------------------------------------------------------------+-------------------------------------------------+-------------+
| <<<uniqueVersion>>> | (<<<deploy>>> only) Whether to assign snapshots a unique version comprised of the timestamp and build number, or to use the same version each time | No, the default is <<<true>>>. | |
*---------------------+--------------------------------------------------------------------------+-------------------------------------------------+-------------+
The task must take either a nested {{{./reference.html#pom} <<<pom>>>}} element, or a <<<pomRefId>>> attribute. Both release and <<<-SNAPSHOT>>> versions are supported.
The task can have an optional {{{./reference.html#localRepository} <<<localRepository>>>}} nested element.
<<<deploy>>> can have an optional {{{./reference.html#remoteRepository} <<<remoteRepository>>>}} nested element. If no
<<<remoteRepository>>> nested element is given, the <<<distributionManagement>>> section of the POM is used.
** <<<attach>>> <(since 2.0.6)>
Multiple artifacts can be attached to the main artifact, for example: sources, javadocs, ...
*------------------+--------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*------------------+--------------------------------------------------------+--------------+
| <<<file>>> | The file to attach. | Yes |
*------------------+--------------------------------------------------------+--------------+
| <<<type>>> | The type of the file. Defaults to <<<jar>>>. | No |
*------------------+--------------------------------------------------------+--------------+
| <<<classifier>>> | The classifier of the file. | No |
*------------------+--------------------------------------------------------+--------------+
* <<<{install-provider}>>>
This task will install a Wagon provider, to add support for more protocols.
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<Attribute>> | <<Description>> | <<Required>> | << Since >> |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<artifactId>>> | The artifact ID of the provider to install. | Yes | |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<groupId>>> | The group ID of the provider to install. The default is <<<org.apache.maven.wagon>>>. | No | 2.0.7 |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<version>>> | The version of the provider to install. | Yes | |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
* <<<{writepom}>>> <(since 2.1.0)>
This task will write a POM object to a file.
*------------------+--------------------------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*------------------+--------------------------------------------------------------------------+--------------+
| <<<pomRefId>>> | The ID of the POM to write. | Yes |
*------------------+--------------------------------------------------------------------------+--------------+
| <<<file>>> | The name of the file to write the POM | Yes |
*------------------+--------------------------------------------------------------------------+--------------+
| <<<trim>>> | A boolean value to determine whether unnecessary information should be removed from the POM. Defaults to <<<true>>>. | No |
*------------------+--------------------------------------------------------------------------+--------------+
* <<<{mvn}>>> <(since 2.0.10)>
This task will run a Maven process either from a specific Maven Home, or by downloading the required version and
running from the local repository directly. The task extends th <<<java>>> task with the following additional
attributes.
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<Attribute>> | <<Description>> | <<Required>> | << Since >> |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<pom>>> | The pom.xml file to use. If not specified Maven will look for a pom.xml in the current directory | No | 2.0.10 |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<mavenHome>>> | The MAVEN_HOME of the version of Maven to launch. If not specified then <<<mavenVersion>>> will control the version of Maven that is launched. | No | 2.0.10 |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<mavenVersion>>> | The version of Maven to launch. The required dependencies will be resolved and Maven will be launched directly from the local repository. There is no requirement to have Maven installed locally. This is ignored if <<<mavenHome>>> is specified. The default value is 2.0.10. Prior to Maven Ant Tasks 2.1.2 only Maven versions in the range <<<[2.0.10,2.2.1]>>> could be launched. Since Maven Ant Tasks 2.1.2 the range has been extended to <<<[2.0.10,3.0.2]>>> newer versions of Maven will probably also work but are untested at this time.| No | 2.0.10 |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<localRepository>>> | The location of the local repository to be used by Maven. | No | 2.0.10 |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
| <<<batchMode>>> | Whether to launch Maven in batch mode or not. Defaults to <<<true>>>. | No | 2.0.10 |
*------------------+--------------------------------------------------------------------------+--------------+-------------+
{Type} Reference
* <<<{localRepository}>>>
Specifies the location of the local repository of artifacts.
~~ TODO: id/refid
*------------------+--------------------------------------------------------+--------------+-------------+
| <<Attribute>> | <<Description>> | <<Required>> | << Since >> |
*------------------+--------------------------------------------------------+--------------+-------------+
| <<<layout>>> | The layout of the local repository. The valid options are <<<legacy>>> (Maven 1), or <<<default>>> (Maven 2). Defaults to <<<default>>>. | No | |
*------------------+--------------------------------------------------------+--------------+-------------+
| <<<path>>> | The directory of the local repository. | Yes | 2.0.7 |
*------------------+--------------------------------------------------------+--------------+-------------+
<<Note>>: until 2.0.6, attribute <<<path>>> was named <<<location>>>, but this changed in 2.0.7 to solve a conflict with Ant 1.7.
* <<<{remoteRepository}>>>
Specifies the location of a remote repository.
~~ TODO: id/refid
*----------------------+--------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*----------------------+--------------------------------------------------------+--------------+
| <<<id>>> | A unique ID of the repository. | Yes |
*----------------------+--------------------------------------------------------+--------------+
| <<<url>>> | The URL of the repository. | Yes |
*----------------------+--------------------------------------------------------+--------------+
| <<<layout>>> | The layout of the remote repository. The valid options are <<<legacy>>> (Maven 1), or <<<default>>> (Maven 2). Defaults to <<<default>>>. | No |
*----------------------+--------------------------------------------------------+--------------+
A <<<remoteRepository>>> can have the following nested elements: <<<releases>>>, <<<snapshots>>>, <<<authentication>>> and <<<proxy>>>.
** <<<releases>>>, <<<snapshots>>>
Policies about downloading different types of artifacts.
*----------------------+--------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*----------------------+--------------------------------------------------------+--------------+
| <<<checksumPolicy>>> | How to treat missing or incorrect checksums for the dependencies that are downloaded. Valid values are <<<warn>>> (<default>) and <<<fail>>>. | No |
*----------------------+--------------------------------------------------------+--------------+
| <<<enabled>>> | Whether to download this type of artifact from the repository. Default is <<<true>>>. | No |
*----------------------+--------------------------------------------------------+--------------+
| <<<updatePolicy>>> | How often to check for updates on dependencies that are snapshots or include a range of versions. Valid values are <<<never>>>, <<<interval:MINUTES>>>, <<<daily>>> (<default>), <<<always>>>. | No |
*----------------------+--------------------------------------------------------+--------------+
** <<<authentication>>>
The authentication element is used for passing a username, password and other credentials to the repository either
on upload or download. The content is the same as for <<<server>>> in the
{{{http://maven.apache.org/ref/current/maven-settings/settings.html#class_server} settings reference}}.
** <<<proxy>>>
The proxy element is typically used for HTTP repositories. The content is the same as for <<<proxy>>> in the
{{{http://maven.apache.org/ref/current/maven-settings/settings.html#class_proxy} settings reference}}.
* <<<{pom}>>>
The POM element will load a POM file and make it available as a reference for the other tasks or as properties.
*------------------+--------------------------------------------------------+--------------+-------------+
| <<Attribute>> | <<Description>> | <<Required>> | << Since >> |
*------------------+--------------------------------------------------------+--------------+-------------+
| <<<file>>> | The file of the POM to load. | Yes | |
*------------------+--------------------------------------------------------+--------------+-------------+
| <<<id>>> | The reference ID of this POM. | No | |
*------------------+--------------------------------------------------------+--------------+-------------+
| <<<refid>>> | The reference ID to use a previously defined POM. | No | |
*------------------+--------------------------------------------------------+--------------+-------------+
| <<<inheritAllProperties>>> | If set to true, all Ant properties will be passed to the Maven POM. If set to false, only user (command-line) properties will be passed. Defaults to true. | No | 2.1.0 |
*------------------+--------------------------------------------------------+--------------+-------------+
| <<<settingsFile>>> | The settings file to use. Defaults to <<<$\{user.home\}/.ant/settings.xml>>> or if that doesn't exist <<<$\{user.home\}/.m2/settings.xml>>>. | No | 2.0.6 |
*---------------------+--------------------------------------------------------------------------+-------------------------------------------------+-------------+
** <<<profile>>> <(since 2.0.10)>
Multiple profile elements can be nested within the pom element. By default the profile
will be activated. If <<active>> is set to false, then the profile will be explicitly
deactivated.
*------------------+--------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*------------------+--------------------------------------------------------+--------------+
| <<<id>>> | The id of the profile to be activated/deactivated. | Yes |
*------------------+--------------------------------------------------------+--------------+
| <<<active>>> | Set to <<<true>>> or <<<false>>> to determine whether the profile should be active. Default is <<<true>>>. | No |
*------------------+--------------------------------------------------------+--------------+
* <<<{versionMapper}>>> <(since 2.0.7)>
This is a {{{http://ant.apache.org/manual/CoreTypes/mapper.html}filename mapper}}
that removes version info from the filename when copying dependencies. It can
also, optionally, remove the directory info from the filename.
The full class name to use in <<<classname>>> attribute of <<<\<mapper\>>>> element is
<<<org.apache.maven.artifact.ant.VersionMapper>>>.
*------------------+--------------------------------------------------------+--------------+
| <<Attribute>> | <<Description>> | <<Required>> |
*------------------+--------------------------------------------------------+--------------+
| <<<from>>> | The versions of the dependencies, as set by <<<versionsId>>> attribute of <<<dependencies>>> task. | Yes |
*------------------+--------------------------------------------------------+--------------+
| <<<to>>> | If this is set to <<<flatten>>> the directory info is also removed from the filename. | No |
*------------------+--------------------------------------------------------+--------------+
You can see a full working example in the {{{./examples/dependencies.html} examples}}.