 ------
 Download Maven Ant Tasks
 ------
 Paul Gier
 ------
 2009-11-30
 ------

~~ 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

Download the Maven Ant Tasks

   The Maven Ant Tasks are distributed as a jar file to be included in the Ant classpath.  The complete
   sources can be downloaded as a zip file.

   After selecting the file to download, you will be prompted for a mirror.  If the file is not found
   on your selected mirror, please be patient, as it may take 24 hours to reach all mirrors.

   The Maven Ant Tasks are distributed under the {{{http://maven.apache.org/license.html} Apache License, version 2.0}}.

*-------------------------+---------+----------+-----------+
|                         | Mirrors | Checksum | Signature |
*-------------------------+---------+----------+-----------+
| Binaries (jar)          | {{{http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-ant-tasks-${project.version}.jar} maven-ant-tasks-${project.version}.jar}} | {{{http://www.apache.org/dist/maven/binaries/maven-ant-tasks-${project.version}.jar.md5} maven-ant-tasks-${project.version}.jar.md5}} | {{{http://www.apache.org/dist/maven/binaries/maven-ant-tasks-${project.version}.jar.asc} maven-ant-tasks-${project.version}.jar.asc}} |
*-------------------------+---------+----------+-----------+
| Sources (zip)           | {{{http://www.apache.org/dyn/closer.cgi/maven/source/maven-ant-tasks-${project.version}-src.zip} maven-ant-tasks-${project.version}-src.zip}} | {{{http://www.apache.org/dist/maven/source/maven-ant-tasks-${project.version}-src.zip.md5} maven-ant-tasks-${project.version}-src.zip.md5}} | {{{http://www.apache.org/dist/maven/source/maven-ant-tasks-${project.version}-src.zip.asc} maven-ant-tasks-${project.version}-src.zip.asc}} |
*-------------------------+---------+----------+-----------+

* System {Requirements}

*-----------------+------------------------------------------------------------------------------------------------+
| <<JDK>>         | JDK version 1.5 or above is required (This is due to dependencies on internal Maven libraries.)
*-----------------+------------------------------------------------------------------------------------------------+
| <<Ant>>         | Ant version 1.6.x, 1.7.x or 1.8.x is required
*-----------------+------------------------------------------------------------------------------------------------+

