<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ 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>The Build Artifact Repository Manager</title>
    <author email="brett@apache.org">Brett Porter</author>
  </properties>
  <!-- move js and css to head -->
  <head>
    <link rel="stylesheet" href="css/jquery.fancybox.2.1.5.css" type="text/css" media="screen" />

    <script src="js/index.js" type="text/javascript" ></script>
    <script src="js/fancybox.js" type="text/javascript" ></script>
    <script src="js/jquery.fancybox.pack.2.1.5.js" type="text/javascript"></script>
    <script src="js/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>

  </head>
  <body>
    <div class="row-fluid">
      <div class="span8">
        <div class="newsBox">
          <div class="hero-unit">
            <span class="bignumber badge badge-warning">NEW</span>
            <p><strong>${archivaReleaseDate}: The new Apache Archiva release version ${archivaReleaseVersion} is ready for download <a href="http://archiva.apache.org/download.html"/> </strong>. 
               This is a bugfix release. Please have a look at the <a href="http://archiva.apache.org/docs/2.2.4/release-notes.html">release notes</a> for further information. 
               As this release contains <strong>security fixes</strong>, we recommend to update to the new version immediately. </p> 
          </div>
        </div>
      </div>
    </div>


    <div id="carousel-main">

        <div id="screenshots-carousel" class="carousel slide span10">
          <!-- Carousel items -->
          <div class="carousel-inner">
            <div class="item active">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/ldap-configuration.png" height="120px"/>
              <div class="carousel-caption">
                <p>Dynamic LDAP Configuration.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/adminguide/redback-runtime-configuration.html">View all.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/ldap-group-roles-mapping.png"/>
              <div class="carousel-caption">
                <p>Dynamic LDAP Group-Roles mapping Configuration.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/adminguide/redback-runtime-configuration.html">View all.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/project-info.png"/>
              <div class="carousel-caption">
                <p>Informative display for artifacts stored in the repository.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/search-form.png"/>
              <div class="carousel-caption">
                <p>User-friendly browsing interface, and powerful search functionalities.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/search-results.png"/>
              <div class="carousel-caption">
                <p>Filterable search results.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/browse.png"/>
              <div class="carousel-caption">
                <p>Browse interface.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>


            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/remote-proxy-cache.png"/>
              <div class="carousel-caption">
                <p>Drag &#38; drop remote proxies ordering.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/upload-files.png"/>
              <div class="carousel-caption">
                <p>Drag &#38; drop upload artifacts via UI.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/graphical-admin.png"/>
              <div class="carousel-caption">
                <p>Comprehensive web-based administration interface.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="https://archiva.apache.org/docs/${archivaReleaseVersion}/images/proxy-connectors-rules.png"/>
              <div class="carousel-caption">
                <p>Bulk update of your black/while list when fetching remote repositories.</p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="https://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>

          </div>

          <!-- Carousel nav -->
          <a class="left carousel-control" id="carousel-prev">&#8249;</a>
          <a class="right carousel-control" id="carousel-next">&#8250;</a>
        </div>
    </div>
    <section name="Apache Archiva&#0153;: The Build Artifact Repository Manager">
      <p>
         Apache Archiva&#0153; is an extensible repository management software that
         helps taking care of your own personal or enterprise-wide build 
         artifact repository. It is the perfect companion for build tools such 
         as <a href="http://maven.apache.org">Maven</a>,
         <a href="http://continuum.apache.org/">Continuum</a>,
         and <a href="http://ant.apache.org/">ANT</a>. 
      </p>
 
      <p>
         Archiva offers several capabilities, amongst which remote repository proxying, 
         security access management, build artifact storage, delivery, browsing, indexing 
         and usage reporting, extensible scanning functionality&#0133; and many more! Get the
         latest updates, follow us on twitter <a href="http://twitter.com/archiva">@archiva</a>.
      </p>

      <p>
        And in case you were wondering, it is pronounced <i>ahr-kahy-vuh</i>, like <i>archive</i> but with an <i>a</i>!
      </p>

      <div class="mainBox">
        <div class="hero-unit">
          <span class="bignumber badge badge-warning">1</span>

          <p>
            <a href="docs/${archivaReleaseVersion}/tour/index.html">Take a look around</a>
          </p>
          <p>
            <!-- Commenting out while we still don't have a live demo  
            Try out the live demo, or take a look at the screenshots in the feature walkthrough.
            -->
            Take a look at the screenshots in the feature walkthrough.
          </p>
          <br style="clear: left" />
        </div>
      </div>
      <div class="mainBox">
        <div class="hero-unit">
          <span class="bignumber badge badge-warning">2</span>

          <p>
            <a href="download.html">Download Archiva</a>
          </p>
          <p>
            <span class="expand" style="width: 200px; display: block; float: left;">
              <img src="images/collapsed.gif" width="7" height="7" alt="" />
              <strong>Latest stable release:</strong>
            </span>
            <span class="button mainalign">
              <a class="btn btn-primary btn-medium" style="margin-bottom: 5px;" href="#" data-toggle="modal" id="openDialogRelease">Get Archiva ${archivaReleaseVersion} <span style="font-size:smaller;color:#F89406">${archivaReleaseDate}</span>
              </a>
            </span>
            <br/>
            #if ($archivaLastSerieVersion)
            <span class="expand" style="width: 200px; display: block; float: left;">
              <img src="images/collapsed.gif" width="7" height="7" alt="" />
              <strong>Previous release:</strong>
            </span>
            <span class="button mainalign">
              <a class="btn btn-primary btn-medium" style="margin-bottom: 5px;" href="#" id="openDialogPreview">Get Archiva ${archivaLastSerieVersion} <span style="font-size:smaller;color:#F89406">${archivaLastSerieVersionDate}</span>
              </a>
            </span>
            <br/>
            #end
            <span class="expand">
              <img src="images/collapsed.gif" width="7" height="7" alt="" />
              <a href="download.html"><strong>All downloads</strong></a>
            </span>
          </p>
        </div>
      </div>

      <div class="mainBox">
        <div class="hero-unit">
          <span class="bignumber badge badge-warning">3</span>

          <p>
            <a href="docs/${archivaReleaseVersion}/index.html">Documentation</a>
          </p>
          <p>
            <img src="images/collapsed.gif" width="7" height="7" alt="" />
            Simple out of the box configuration and <a href="docs/${archivaReleaseVersion}/quick-start.html">quick start guide</a>
            <br/>
            <img src="images/collapsed.gif" width="7" height="7" alt="" />
            Read the <a href="docs/${archivaReleaseVersion}/userguide/index.html">users guide</a> and <a href="docs/${archivaReleaseVersion}/adminguide/index.html">administration documentation</a>
            <br/>
            <img src="images/collapsed.gif" width="7" height="7" alt="" />
            For security issues, read the <a href="security.html">security vulnerabilities document</a>
            <br/>
            <img src="images/collapsed.gif" width="7" height="7" alt="" />
            Documentation is also available for <a href="versions.html">previous versions</a>
          </p>
        </div>
      </div>
      <div class="mainBox">
        <div class="hero-unit">
          <span class="bignumber badge badge-warning">4</span>

          <p>
            <a href="get-involved.html">Get involved</a>
          </p>
          <p>
            Get support from the <a href="mailing-lists.html">mailing lists</a> and <a href="http://cwiki.apache.org/confluence/display/ARCHIVA/">wiki</a>, file <a href="issue-management.html">issues</a>, and even <a href="get-involved.html">get involved</a> in the development.
          </p>
          <br style="clear: left" />
        </div>
      </div>

      <div>
        <h2>Videos</h2>
        <h4>Quick start</h4>
        <p align="center">
          <iframe width="420" height="315" src="https://www.youtube.com/embed/kG349qooN8E" frameborder="0" allowfullscreen=""></iframe>
        </p>
        <h4>Browsing/Uploading/Searching</h4>
        <p align="center">
          <iframe width="420" height="315" src="https://www.youtube.com/embed/y4DoLCfYR-A" frameborder="0" allowfullscreen=""></iframe>
        </p>
      </div>

    </section>

    <section name="License">
      <p>
        Archiva is distributed under the <a href="http://www.apache.org/licenses/">Apache License, version 2.0</a>
      </p>
    </section>
    <section name="Apache Software Foundation">
        <p>
            Archiva is part of the Apache software Foundation. We would like to thank all the <a href="http://www.apache.org/foundation/thanks.html">sponsors that provide financial assistance to the Apache Software Foundation</a>.
            For more information on how you can support the foundation, see the <a href="http://www.apache.org/foundation/sponsorship.html">sponsorship</a> page.
        </p>
        <p>
            <a href="https://www.apache.org/events/current-event.html">
                <img src="https://www.apache.org/events/current-event-234x60.png" alt="Apache Events" style="vertical-align: text-top"/>
            </a>
        </p>
        <p> You can also attend <a href="https://www.apache.org/events/current-event.html">Apache Events</a>: don't hesitate to ask on the <a href="mailing-lists.html">Archiva User mailing list</a>
            if Archiva team members will be there, it can be a great opportunity to meet them.
        </p>
    </section>

    <section name="Resources">
      <p>
        Need more? Try some of these resources.
      </p>
      <div>
        <h3>Books</h3>
        <div style="margin-left: auto; margin-right: auto; text-align: center">
          <div style="float: left; width: 50%;">
            <p>
              <a href="http://www.packtpub.com/apache-maven-2-effective-implementations/book"><img src="images/books/apache_maven_2_effective_implementation.jpg" /></a><br/>
              <a href="http://www.packtpub.com/apache-maven-2-effective-implementations/book">Apache Maven 2: Effective Implementation</a> (Maria Odea Ching, Brett Porter; September 2009)<br/>
              <span style="font-size: 0.8em">
                Build and manage applications with Maven, Continuum and Archiva
              </span>
            </p>
          </div>
          <div style="float: left; width: 50%;">
            <p>
              <a href="http://www.wakaleo.com/java-power-tools"><img src="images/books/java_power_tools.gif" /></a><br/>
              <a href="http://www.wakaleo.com/java-power-tools">Java Power Tools</a> (John Smart; April 2008)<br/>
              <span style="font-size: 0.8em">
                Contains a section on Archiva and repository management
              </span>
            </p>
          </div>
        </div>
      </div>
      <div style="clear: left">
        <h3>Articles, Presentations and Tutorials</h3>
        <ul>
          <li>
            <a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=archiva">Archiva 1.1.1 Tutorial in Spanish!</a> - Video also available 
            <a href="http://www.adictosaltrabajo.com/detalle-noticia.php?noticia=61">here</a> - (Ángel García Jerez; September 2008)
          </li>
        </ul>
      </div>
    </section>

      <div id="dialogRelease" class="modal hide fade">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#215;]</button>
          <h1>Archiva ${archivaReleaseVersion}</h1>
        </div>
        <div class="modal-body">
          <p>
          This is the recommended latest release of Archiva.
          </p>
          <table>
            <tr>
              <th> </th>
              <th>File-Type</th>
              <th>Checksum</th>
              <th>Signature</th>
            </tr>
            <tr>
              <td>Archiva ${archivaReleaseVersion} Standalone</td>
              <td><a href="https://www.apache.org/dist/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.asc">asc</a></td>
            </tr>
            <tr>
              <td>Archiva ${archivaReleaseVersion} WAR</td>
              <td><a href="http://www.apache.org/dist/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.asc">asc</a></td>
            </tr>
          </table>

        </div>
        <div class="modal-footer">
          <div class="row">
            <div class="pull-rigth">
              <a href="docs/${archivaReleaseVersion}/release-notes.html">Release Notes</a> | <a href="download.html">More downloads or change mirror.</a>
            </div>
            <!-- add mirror change option -->
            <!--div>
              <form action="[location]" method="get" id="SelectMirror" class="form-inline">
                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" class="btn"/>
              </form>
            </div-->
          </div>
        </div>
      </div>
#if ($archivaLastSerieVersion)
      <div id="dialogPreview" class="modal hide fade">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#215;]</button>
          <h1>Archiva ${archivaLastSerieVersion}</h1>
        </div>
        <div class="modal-body">
          <p>This is the last release of the previous Archiva development series.</p>
          <table>
            <tr>
              <th> </th>
              <th>Mirrors</th>
              <th>Checksum</th>
              <th>Signature</th>
            </tr>
            <tr>
              <td>Archiva ${archivaLastSerieVersion} Standalone</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>
          </table>
        </div>
        <div class="modal-footer">
          <p><a href="docs/${archivaLastSerieVersion}/release-notes.html">Release Notes</a> | <a href="download.html">More downloads or change mirror.</a></p>
        </div>
      </div>
#end

  </body>
</document>
