<?xml version="1.0" encoding="ISO-8859-1" ?>

<!--
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.
-->

<document>
  <properties>
    <title>Download Apache Archiva</title>
  </properties>
  <body>
    <section name="Download Apache Archiva ${archivaReleaseVersion}">
      <p>Archiva is distributed under the <a href="http://www.apache.org/licenses/">Apache License, version 2.0</a>.</p>
      <subsection name="System Requirements">
        <table>
          <tr>
            <td><b>JDK</b></td>
            <td>1.7 or above</td>
          </tr>
          <tr>
            <td><b>No minimum requirement</b></td>
            <td>The Archiva application is in itself about 50MB but will use more disk space to store repository contents</td>
          </tr>
          <tr>
            <td><b>Operating System</b></td>
            <td>Support for Linux, Mac OS, Solaris and Windows.  Tested on Windows XP SP2, Ubuntu Linux, and Mac OS X.</td>
          </tr>
        </table>
      </subsection>
      <a name="mirror"/>
      <subsection name="Mirror">

        <p>
          [if-any logo]
          <a href="[link]">
            <img align="right" src="[logo]" border="0"
                 alt="logo"/>
          </a>
          [end]
          The currently selected mirror is
          <b>[preferred]</b>.
          If you encounter a problem with this mirror,
          please select another mirror.
          If all mirrors are failing, there are
          <i>backup</i>
          mirrors
          (at the end of the mirrors list) that should be available.
        </p>

        <form action="[location]" method="get" id="SelectMirror" class="form-inline">
          Other mirrors:
          <select name="Preferred" class="input-xlarge">
            [if-any http]
            [for http]
            <option value="[http]">[http]</option>
            [end]
            [end]
            [if-any ftp]
            [for ftp]
            <option value="[ftp]">[ftp]</option>
            [end]
            [end]
            [if-any backup]
            [for backup]
            <option value="[backup]">[backup] (backup)</option>
            [end]
            [end]
          </select>
          <input type="submit" value="Change" class="btn"/>
        </form>

        <p>
          You may also consult the
          <a href="http://www.apache.org/mirrors/">complete list of
            mirrors.</a>
        </p>

      </subsection>
      <subsection name="Current Release: Archiva ${archivaReleaseVersion}">
        <p>
          This is the currently recommended version of Archiva.

          <ul>
            <li><a href="./docs/${archivaReleaseVersion}/release-notes.html">Release Notes</a></li>
            <li><a href="./known-issues.html">Known Issues and Errata</a></li>
              <li><a href="./security.html">Security Reports</a></li>
          </ul>
        </p>
        <p>
          <table>
            <thead>
              <tr>
                <th>Archiva ${archivaReleaseVersion} </th>
                <th>File-Type</th>
                <th>SHA256 Checksum</th>
                <th>SHA512 Checksum</th>
                <th>Signature</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>Archiva ${archivaReleaseVersion} Standalone</td>
                <td><a href="[preferred]archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.tar.gz">tar.gz</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.tar.gz.sha256">sha256</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.tar.gz.sha512">sha512</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.tar.gz.asc">asc</a></td>
              </tr>
              <tr>
                <td></td>
                <td><a href="[preferred]archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.zip">zip</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.zip.sha256">sha256</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.zip.sha512">sha512</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.zip.asc">asc</a></td>
              </tr>
              <tr>
                <td>Archiva ${archivaReleaseVersion} WAR</td>
                <td><a href="[preferred]archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}.war">war</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}.war.sha256">sha256</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}.war.sha512">sha512</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}.war.asc">asc</a></td>
              </tr>
              <tr>
                <td>Archiva ${archivaReleaseVersion} Sources</td>
                <td><a href="[preferred]archiva/${archivaReleaseVersion}/src/apache-archiva-${archivaReleaseVersion}-src.zip">source zip</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/src/apache-archiva-${archivaReleaseVersion}-src.zip.sha256">sha256</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/src/apache-archiva-${archivaReleaseVersion}-src.zip.sha512">sha512</a></td>
                <td><a href="http://www.apache.org/dist/archiva/${archivaReleaseVersion}/src/apache-archiva-${archivaReleaseVersion}-src.zip.asc">asc</a></td>
              </tr>
            </tbody>
          </table>
        </p>

      </subsection>

        #if ($archivaLastSerieVersion)
          <subsection name="Last Release series 1.3.x: Archiva ${archivaLastSerieVersion}">
            <p>
            This is the previous stable release of Archiva.
            <ul>
              <li><a href="./docs/${archivaLastSerieVersion}/release-notes.html">Release Notes</a></li>
              <li><a href="./known-issues.html">Known Issues and Errata</a></li>
              <li><a href="./security.html">Security Reports</a></li>
            </ul>
            </p>
            <p>
              <table>
                <thead>
                  <tr>
                    <th>Archiva ${archivaLastSerieVersion} </th>
                    <th>Mirrors</th>
                    <th>Checksum</th>
                    <th>Signature</th>
                  </tr>
                </thead>
                <tbody>
                  <tr>
                    <td>Archiva ${archivaLastSerieVersion} Standalone</td>
                    <td><a href="[preferred]archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.tar.gz">tar.gz</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.tar.gz.md5">md5</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.tar.gz.asc">asc</a></td>
                  </tr>
                  <tr>
                    <td></td>
                    <td><a href="[preferred]archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.zip">zip</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.zip.md5">md5</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.zip.asc">asc</a></td>
                  </tr>
                  <tr>
                    <td>Archiva ${archivaLastSerieVersion} WAR</td>
                    <td><a href="[preferred]archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.war">war</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.war.md5">md5</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.war.asc">asc</a></td>
                  </tr>
                  <tr>
                    <td>Archiva ${archivaLastSerieVersion} Sources</td>
                    <td><a href="[preferred]archiva/${archivaLastSerieVersion}/src/apache-archiva-${archivaLastSerieVersion}-src.zip">source zip</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/src/apache-archiva-${archivaLastSerieVersion}-src.zip.md5">md5</a></td>
                    <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/src/apache-archiva-${archivaLastSerieVersion}-src.zip.asc">asc</a></td>
                  </tr>
                </tbody>
              </table>
            </p>
          </subsection>

        #end

      <subsection name="Previous Versions">
        <p>
          More releases are available in the <a href="http://archive.apache.org/dist/archiva/">Apache Archiva Archives</a>
          or prior to the graduation from Maven, in the <a href="http://archive.apache.org/dist/maven/binaries/">Apache Maven Archives</a>.
        </p>
      </subsection>
      <subsection name="Verify the integrity of the files">
        <p>
          We recommend that you verify the integrity of the downloaded files using the PGP signatures and SHA, MD5 checksums.

          The PGP signatures can be verified using PGP or GPG. First download the <a href="http://www.apache.org/dist/archiva/KEYS">KEYS</a>
          as well as the asc signature file for the particular distribution. Make sure you get these files from
          <a href="http://www.apache.org/dist/archiva">the main distribution directory</a>,
          rather than from a mirror. <br/>
          Then verify the signatures using:
        </p>
          <pre>
          % pgpk -a KEYS
          % pgpv $filename.tar.gz.asc
          or
          % pgp -ka KEYS
          % pgp $filename.tar.gz.asc
          or
          % gpg --import KEYS
          % gpg --verify $filename.tar.gz.asc
          </pre>
        <p>
          Please use the SHA checksum for verification if available, use MD5 only for the older versions, that have no SHA checksum available.
          To verify the SHA signature on the files, you can use utilities for your platform. A Unix program called sha1sum or sha256sum (md5sum) is included in many
          Unix distributions. It is also available as part of <a href="http://www.gnu.org/software/coreutils/">GNU Coreutils</a>.
          Windows users can get binary checksum utility e.g. from <a href="http://www.slavasoft.com/hashcalc/">SlavaSoft</a>.
        </p>
      </subsection>
    </section>
  </body>
</document>
