 ------
Download Maven ${currentVersion}
 ------
Brett Porter
Jason van Zyl
 ------
4 October 2005
 ------

Download Maven ${currentVersion}

  Maven is distributed in several formats for your convenience.

  You will be prompted for a mirror - if the file is not found on yours, please be patient, as it may take 24
  hours to reach all mirrors.

  Maven ${currentVersion} is distributed under the {{{http://maven.apache.org/license.html} Apache License, version 2.0}}.

  We <<strongly>> encourage our users to configure a Maven repository mirror closer to their location, please read {{{guides/mini/guide-mirror-settings.html} How to Use Mirrors for Repositories}}.

*-------------------------+---------+----------+-----------+
|                         | Mirrors | Checksum | Signature |
*-------------------------+---------+----------+-----------+
| Maven ${currentVersion} (tar.bz2)     | {{{http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-${currentVersion}-bin.tar.bz2} maven-${currentVersion}-bin.tar.bz2}} | {{{http://www.apache.org/dist/maven/binaries/maven-${currentVersion}-bin.tar.bz2.md5} maven-${currentVersion}-bin.tar.bz2.md5}} | {{{http://www.apache.org/dist/maven/binaries/maven-${currentVersion}-bin.tar.bz2.asc} maven-${currentVersion}-bin.tar.bz2.asc}} |
*-------------------------+---------+----------+-----------+
| Maven ${currentVersion} (tar.gz)      | {{{http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-${currentVersion}-bin.tar.gz} maven-${currentVersion}-bin.tar.gz}} | {{{http://www.apache.org/dist/maven/binaries/maven-${currentVersion}-bin.tar.gz.md5} maven-${currentVersion}-bin.tar.gz.md5}} | {{{http://www.apache.org/dist/maven/binaries/maven-${currentVersion}-bin.tar.gz.asc} maven-${currentVersion}-bin.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| Maven ${currentVersion} (zip)         | {{{http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-${currentVersion}-bin.zip} maven-${currentVersion}-bin.zip}} | {{{http://www.apache.org/dist/maven/binaries/maven-${currentVersion}-bin.zip.md5} maven-${currentVersion}-bin.zip.md5}} | {{{http://www.apache.org/dist/maven/binaries/maven-${currentVersion}-bin.zip.asc} maven-${currentVersion}-bin.zip.asc}} |
*-------------------------+---------+----------+-----------+
| Maven Ant Tasks 2.0.7                 | {{{http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-ant-tasks-2.0.7.jar} maven-ant-tasks-2.0.7.jar}} | {{{http://www.apache.org/dist/maven/binaries/maven-ant-tasks-2.0.7.jar.md5} maven-ant-tasks-2.0.7.jar.md5}} | {{{http://www.apache.org/dist/maven/binaries/maven-ant-tasks-2.0.7.jar.asc} maven-ant-tasks-2.0.7.jar.asc}} |
*-------------------------+---------+----------+-----------+

* Previous Releases

  All previous releases of Maven can be found in the {{{http://archive.apache.org/dist/maven/binaries/}archives}}.

* System {Requirements}

*----------------------+---------------------------------------------------------------------------------------------+
| <<JDK>>              | 1.4 or above (this is to execute Maven - it still allows you to build against 1.3 and prior JDK's)
*----------------------+---------------------------------------------------------------------------------------------+
| <<Memory>>           | No minimum requirement
*----------------------+---------------------------------------------------------------------------------------------+
| <<Disk>>             | No minimum requirement. Approximately 100MB will be used for your local repository, however this will vary depending on usage and can be removed and redownloaded at any time.
*----------------------+---------------------------------------------------------------------------------------------+
| <<Operating System>> | No minimum requirement. On Windows, Windows NT and above or Cygwin is required for the startup scripts. Tested on Windows XP, Fedora Core and Mac OS X.
*----------------------+---------------------------------------------------------------------------------------------+

* {Installation} Instructions

** Windows 2000/XP

  [[1]] Unzip <<<maven-${currentVersion}-bin.zip>>> to the directory you wish to install Maven ${currentVersion}. These instructions
        assume you chose <<<C:\Program Files\Apache Software Foundation\maven-${currentVersion}>>>

  [[2]] Add the <<<bin>>> directory to your path, by opening up the system properties (WinKey + Pause),
        selecting the "Advanced" tab, and the "Environment Variables" button, then editing the <<<PATH>>>
        variable in the user variables. eg.
        <<<"C:\Program Files\Apache Software Foundation\maven-${currentVersion}\bin";%PATH%>>>

  [[3]] In the same dialog, make sure that <<<JAVA_HOME>>> is set to the location of your JDK,
        eg. <<<C:\Program Files\Java\jdk1.5.0_02>>>

  [[4]] Run <<<mvn --version>>> to verify that it is correctly installed.

** Unix-based Operating Systems (Linux, Solaris and Mac OS X)

  [[1]] Extract the distribution archive to the directory you wish to install Maven ${currentVersion}. These instructions
        assume you chose <<</usr/local/maven-${currentVersion}>>>. The directory <<<maven-${currentVersion}>>> will be created from
        the archive.

  [[2]] Add the <<<bin>>> directory to your path, eg. <<<export
PATH=/usr/local/maven-${currentVersion}/bin:$PATH>>>

  [[3]] Make sure that <<<JAVA_HOME>>> is set to the location of your JDK, eg.
        <<<export JAVA_HOME=/usr/java/jdk1.5.0_02>>>

  [[4]] Run <<<mvn --version>>> to verify that it is correctly installed.

