Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Aether project repository (aether-ant)
Java

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
.gitignore
CONTRIBUTING.md
README.md
build.xml
epl-v10.html
notice.html
pom.xml

README.md

Aether Ant Tasks

The Aether Ant Tasks enable build scripts for Apache Ant 1.7+ to use Eclipse 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. 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 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 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"
Something went wrong with that request. Please try again.