<?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="https://www.apache.org/licenses/">Apache License, version 2.0</a>.</p>
      <subsection name="System Requirements">
        <table>
          <tr>
            <td><b>JDK</b></td>
            <td>1.8</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="https://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="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.tar.gz.sha256">sha256</a></td>
                <td><a href="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.tar.gz.sha512">sha512</a></td>
                <td><a href="https://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="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.zip.sha256">sha256</a></td>
                <td><a href="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}-bin.zip.sha512">sha512</a></td>
                <td><a href="https://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="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}.war.sha256">sha256</a></td>
                <td><a href="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/binaries/apache-archiva-${archivaReleaseVersion}.war.sha512">sha512</a></td>
                <td><a href="https://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="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/src/apache-archiva-${archivaReleaseVersion}-src.zip.sha256">sha256</a></td>
                <td><a href="https://www.apache.org/dist/archiva/${archivaReleaseVersion}/src/apache-archiva-${archivaReleaseVersion}-src.zip.sha512">sha512</a></td>
                <td><a href="https://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="https://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.tar.gz.md5">md5</a></td>
                    <td><a href="https://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="https://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.1-bin.zip.md5">md5</a></td>
                    <td><a href="https://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="https://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}.war.md5">md5</a></td>
                    <td><a href="https://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="https://www.apache.org/dist/archiva/${archivaLastSerieVersion}/src/apache-archiva-${archivaLastSerieVersion}-src.zip.md5">md5</a></td>
                    <td><a href="https://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="https://archive.apache.org/dist/archiva/">Apache Archiva Archives</a>
          or prior to the graduation from Maven, in the <a href="https://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="https://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="https://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="https://www.gnu.org/software/coreutils/">GNU Coreutils</a>.
          Windows users can get binary checksum utility e.g. from <a href="https://www.slavasoft.com/hashcalc/">SlavaSoft</a>.
        </p>
      </subsection>
    </section>
  </body>
</document>
