<?xml version="1.0"?>
<!--
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.
-->
<!--
 +======================================================================+
 |****                                                              ****|
 |****      THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN      ****|
 |****                    DO NOT EDIT DIRECTLY                      ****|
 |****                                                              ****|
 +======================================================================+
 | TEMPLATE FILE: download-page-template.xml                            |
 | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
 +======================================================================+
 |                                                                      |
 | 1) Re-generate using: mvn commons-build:download-page                |
 |                                                                      |
 | 2) Set the following properties in the component's pom:              |
 |    - commons.componentid     (required, alphabetic, lower case)      |
 |    - commons.release.version (required)                              |
 |    - commons.release.name    (required)                              |
 |    - commons.binary.suffix   (optional)                              |
 |      (defaults to "-bin", set to "" for pre-maven2 releases)         |
 |    - commons.release.desc    (optional)                              |
 |    - commons.release.subdir  (optional)                              |
 |    - commons.release.hash    (optional, lowercase, default sha512)   |
 |                                                                      |
 |    - commons.release.[234].version       (conditional)               |
 |    - commons.release.[234].name          (conditional)               |
 |    - commons.release.[234].binary.suffix (optional)                  |
 |    - commons.release.[234].desc          (optional)                  |
 |    - commons.release.[234].subdir        (optional)                  |
 |    - commons.release.[234].hash       (optional, lowercase, [sha512])|
 |                                                                      |
 | 3) Example Properties                                                |
 |    (commons.release.name inherited by parent:                        |
 |     ${project.artifactId}-${commons.release.version}                 |
 |                                                                      |
 |  <properties>                                                        |
 |    <commons.componentid>math</commons.componentid>                   |
 |    <commons.release.version>1.2</commons.release.version>            |
 |  </properties>                                                       |
 |                                                                      |
 +======================================================================+
-->
<document>
  <properties>
    <title>Download Apache Commons JCS</title>
    <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
  </properties>
  <body>
    <section name="Download Apache Commons JCS">
    <subsection name="Using a Mirror">
      <p>
        We recommend you use a mirror to download our release
        builds, but you <strong>must</strong> <a href="https://www.apache.org/info/verification.html">verify the integrity</a> of
        the downloaded files using signatures downloaded from our main
        distribution directories. Recent releases (48 hours) may not yet
        be available from all the mirrors.
      </p>

      <p>
        You are currently using <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.
        <br></br>
        [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
      </p>

      <form action="[location]" method="get" id="SelectMirror">
        <p>
          Other mirrors:
          <select name="Preferred">
          [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"></input>
        </p>
      </form>

      <p>
        It is essential that you
        <a href="https://www.apache.org/info/verification.html">verify the integrity</a>
        of downloaded files, preferably using the <code>PGP</code> signature (<code>*.asc</code> files);
        failing that using the <code>SHA512</code> hash (<code>*.sha512</code> checksum files).
      </p>
      <p>
        The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a>
        file contains the public PGP keys used by Apache Commons developers
        to sign releases.
      </p>
    </subsection>
    </section>
    <section name="Apache Commons JCS 3.0 (Java 8+)">
      <subsection name="Binaries">
        <table>
          <tr>
              <td><a href="[preferred]/commons/jcs/binaries/commons-jcs3-dist-3.0-bin.tar.gz">commons-jcs3-dist-3.0-bin.tar.gz</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/binaries/commons-jcs3-dist-3.0-bin.tar.gz.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/binaries/commons-jcs3-dist-3.0-bin.tar.gz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/commons/jcs/binaries/commons-jcs3-dist-3.0-bin.zip">commons-jcs3-dist-3.0-bin.zip</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/binaries/commons-jcs3-dist-3.0-bin.zip.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/binaries/commons-jcs3-dist-3.0-bin.zip.asc">pgp</a></td>
          </tr>
        </table>
      </subsection>
      <subsection name="Source">
        <table>
          <tr>
              <td><a href="[preferred]/commons/jcs/source/commons-jcs3-dist-3.0-src.tar.gz">commons-jcs3-dist-3.0-src.tar.gz</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/source/commons-jcs3-dist-3.0-src.tar.gz.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/source/commons-jcs3-dist-3.0-src.tar.gz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/commons/jcs/source/commons-jcs3-dist-3.0-src.zip">commons-jcs3-dist-3.0-src.zip</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/source/commons-jcs3-dist-3.0-src.zip.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/commons/jcs/source/commons-jcs3-dist-3.0-src.zip.asc">pgp</a></td>
          </tr>
        </table>
      </subsection>
    </section>
    <section name="Archives">
        <p>
          Older releases can be obtained from the archives.
        </p>
        <ul>
          <li class="download"><a href="[preferred]/commons/jcs/">browse download area</a></li>
          <li><a href="https://archive.apache.org/dist/commons/jcs/">archives...</a></li>
        </ul>
    </section>
  </body>
</document>
