| # Aether Ant Tasks |
| |
| The Aether Ant Tasks enable build scripts for [Apache Ant](http://ant.apache.org/) 1.7+ to use |
| [Eclipse Aether](http://www.eclipse.org/aether) to resolve dependencies and install and deploy locally built artifacts. |
| |
| To integrate the tasks into your build file, copy the JAR into your project's lib directory and use the following |
| snippet to load it: |
| |
| <project xmlns:aether="antlib:org.eclipse.aether.ant" ...> |
| <taskdef uri="antlib:org.eclipse.aether.ant" resource="org/eclipse/aether/ant/antlib.xml"> |
| <classpath> |
| <fileset dir="lib" includes="aether-ant-tasks-*.jar"/> |
| </classpath> |
| </taskdef> |
| ... |
| </project> |
| |
| See the build.xml in the project sources for a complete example build script. |
| |
| ## Settings |
| |
| The Ant tasks are tightly integrated with the usual [Apache Maven settings.xml](http://maven.apache.org/settings.html). |
| By default, the usual ${user.home}/.m2/settings.xml is used for user settings. |
| |
| For the global settings, different paths will be tried: |
| |
| * ${ant.home}/etc/settings.xml |
| * ${maven.home}/conf/settings.xml |
| * $M2_HOME/conf/settings.xml |
| |
| The <settings/> definition is used to change that: |
| |
| <settings file="my-settings.xml" globalfile="myglobal-settings.xml"/> |
| |
| Some settings defined in the settings file or in the POM can also be changed inside the Ant file. |
| |
| ### Proxy Settings |
| |
| Proxy definitions are used throughout the whole session. There may be multiple |
| proxies set. The proxy to use will be chosen by evaluating the nonProxyHosts on |
| each proxy definition. |
| |
| <proxy host="" port="" type="http" nonProxyHosts="foo,bar"/> |
| |
| ### Authentication |
| |
| Authentication elements are used to access remote repositories. Every |
| authentication definition will be added globally and chosen based on the |
| 'servers' attribute. If this attribute is not set, an authentication has to be |
| referenced explicitly to be used. |
| |
| <authentication username="login" password="pw" id="auth"/> |
| <authentication privateKeyFile="file.pk" passphrase="phrase" servers="distrepo" id="distauth"/> |
| |
| ### Local Repository |
| |
| Only one local repository can be used at a time. |
| |
| <localrepo dir="someDir"/> |
| |
| ### Remote Repositories |
| |
| Remote repositories may be defined directly: |
| |
| <remoterepo id="rso" url="http://repository.sonatype.org/" type="default" releases="true" snapshots="false" updates="always" checksums="fail"/> |
| |
| <remoterepo id="rao" url="http://repository.apache.org/"> |
| <releases enabled="true" updates="daily" checksums="warn"/> |
| <snapshots enabled="false"/> |
| <authentication refid="auth"/> |
| </remoterepo> |
| |
| <remoterepo id="distrepo" url="..." authref="distauth"/> |
| |
| Multiple repositories may be used as a group in every place that is legal for a |
| remote repository: |
| |
| <remoterepos id="all"> |
| <remoterepo refid="rso"/> |
| <remoterepo refid="rao"/> |
| <remoterepo refid="distrepo"/> |
| </remoterepos> |
| |
| *Note:* Currently, only file:, http: and https: protocols are supported for remote repositories. |
| |
| ### Mirrors |
| |
| <mirror id="" url="" mirrorOf=""/> |
| |
| ### Offline Mode |
| |
| To suppress any network activity and only use already cached artifacts/metadata, you can use a boolean property: |
| |
| <property name="aether.offline" value="true"/> |
| |
| |
| ## Project |
| |
| Project settings deal with locally availabe information about the build. |
| |
| ### POM |
| |
| The POM is the data type used to determine the target for the install and |
| deploy tasks. If you define a POM without an id based on a full pom.xml file, |
| that POM will be used by default for install and deploy. |
| |
| <pom file="pom.xml" id="pom"/> |
| <pom groupId="g" artifactId="a" version="v"/> |
| <pom coords="g:a:v"/> |
| |
| #### Properties |
| |
| If a POM is set via a file parameter its effective model is made available as properties to the Ant project. |
| The properties are prefixed with the ref id of the `<pom>` element, e.g. ${pom.version} for the example above. |
| Likewise, project properties defined in the POM are accessible via the prefix "pom.properties.". If no id has been |
| assigned, the properties use the prefix "pom." by default. |
| |
| ### Output Artifacts |
| |
| `<artifact>` elements define the artifacts produced by this build that should be installed or deployed. |
| |
| <artifact file="file-src.jar" type="jar" classifier="sources" id="src"/> |
| |
| <artifacts id="producedArtifacts"> |
| <artifact refid="src"/> |
| <artifact file="file-src.jar"/> |
| </artifacts> |
| |
| ### Dependencies |
| |
| Dependencies are used to to create classpaths or filesets. They are used by |
| the `<resolve>`-task, which collects the artifacts belonging to the dependencies |
| transitively. |
| |
| <dependency coords="g:a:v"/> |
| |
| <dependency groupId="g" artifactId="a" version="v" classifier="c" type="jar" scope="runtime"> |
| <exclusion coords="g:a"/> |
| <exclusion groupId="g" artifactId="a"/> |
| </dependency> |
| |
| <dependencies id="deps"> |
| <dependency refid="first"/> |
| <dependency refid="second"/> |
| <exclusion coords="g:a"/> <!-- global exclusion for all dependencies of this group --> |
| </dependencies> |
| |
| |
| ## Tasks |
| |
| ### Install |
| |
| You need to set a POM that references a file for the install task to work. |
| |
| <install artifactsref="producedArtifacts"/> |
| |
| ### Deploy |
| |
| You need to set a POM that references a file for the deploy task to work, as that POM file will be deployed to repository. |
| |
| <deploy artifactsref="producedArtifacts"> |
| <remoterepo refid="distrepo"/> |
| <snapshotrepo refid="snaprepo"> |
| </deploy> |
| |
| ### Resolve |
| |
| The `<resolve>`-task is used to collect and resolve dependencies from remote |
| servers. If no repositories are set explicitly for the task, the repositories |
| referenced by "aether.repositories" are used. This contains only central by |
| default, but can be overridden by supplying another repository definition with |
| this id. |
| |
| |
| This task is able to assemble the collected dependencies in three different ways: |
| |
| * Classpath: The `<path>` element defines a classpath with all resolved dependencies. |
| * Files: `<files>` will assemble a fileset containing all resolved dependencies. |
| * Properties: `<properties>` will set properties with the given prefix and the coordinates to the path to the resolved file. |
| |
| These targets may also be mentioned more than once for the same resolve task, |
| but only one set of <dependencies/> is allowed. |
| |
| <resolve failOnMissingAttachments="true"> |
| <dependencies> |
| <dependency coords="org.apache.maven:maven-profile:2.0.6"/> |
| <exclusion artifactId="junit"/> |
| <exclusion groupId="org.codehaus.plexus"/> |
| </dependencies> |
| <path refid="cp" classpath="compile"/> |
| <files refid="src.files" attachments="sources" dir="target/sources" |
| layout="{artifactId}-{classifier}.{extension}"/> |
| <files refid="api.files" attachments="javadoc" dir="target/javadoc" |
| layout="{artifactId}-{classifier}.{extension}"/> |
| <properties prefix="dep." scopes="provided,system"/> |
| </resolve> |
| |
| <resolve dependenciesref="deps"> |
| <path refid="cp.compile" classpath="compile"/> |
| <path refid="cp.test" classpath="test"/> |
| </resolve> |
| |
| Scope filters can be set on every target, enumerating included and/or excluded |
| scope names. Exclusions are denoted by prefixing the scope name with '-' or '!' (e.g. 'provided,!system'). |
| |
| The classpath attribute is a shortcut for the scope filters (e.g. |
| classpath="compile" equals scope="provided,system,compile"). Valid values are |
| "compile", "runtime", "test". |
| |
| <resolve> |
| <dependencies pomRef="pom"/> |
| <remoterepos refid="all"/> |
| <path refid="cp" classpath="compile"/> |
| <path refid="tp" classpath="test"/> |
| </resolve> |
| |
| The layout attribute of the `<files>` element recognizes the following placeholders to refer to the coordinates of the |
| currently processed artifact: |
| |
| * {groupId}, e.g. "org.sonatype.aether" |
| * {groupIdDirs}, e.g. "org/sonatype/aether" |
| * {artifactId}, e.g. "aether-api" |
| * {version}, e.g. "1.12-20110419.181353-123" |
| * {baseVersion}, e.g. "1.12-SNAPSHOT" |
| * {extension}, e.g. "jar" |
| * {classifier}, e.g. "sources" |
| |