<?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="newsBox">
    <div class="hero-unit">
      <span class="bignumber badge badge-warning">NEW</span>
      <p><strong>Our code source is now using git, so you can propose pull requests using <a href="https://github.com/apache/archiva">github mirror</a></strong></p>
      <p><strong>26th March 2014 release of 2.0.1. See <a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">Quick Tour</a></strong></p>
    </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="http://archiva.apache.org/docs/${archivaReleaseVersion}/images/ldap-configuration.png" height="120px"/>
              <div class="carousel-caption">
                <p>Dynamic LDAP Configuration.</p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/adminguide/redback-runtime-configuration.html">View all.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://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="http://archiva.apache.org/docs/${archivaReleaseVersion}/adminguide/redback-runtime-configuration.html">View all.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://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="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://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="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/search-results.png"/>
              <div class="carousel-caption">
                <p>Filterable search results.</p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/browse.png"/>
              <div class="carousel-caption">
                <p>Browse interface.</p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>


            <div class="item">
              <img alt="" src="http://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="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://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="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://archiva.apache.org/docs/${archivaReleaseVersion}/images/tour/graphical-admin.png"/>
              <div class="carousel-caption">
                <p>Comprehensive web-based administration interface.</p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/index.html">View new documentation.</a></p>
              </div>
            </div>
            <div class="item">
              <img alt="" src="http://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="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">View all.</a></p>
                <p><a href="http://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>Latest preview 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="mail-lists.html">mailing lists</a> and <a href="http://cwiki.apache.org/confluence/display/ARCHIVA/">wiki</a>, file <a href="issue-tracking.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="http://www.youtube.com/embed/kG349qooN8E" frameborder="0" allowfullscreen=""></iframe>
        </p>
        <h4>Browsing/Uploading/Searching</h4>
        <p align="center">
          <iframe width="420" height="315" src="http://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="Thanks">
      <p>
        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>
    </section>

    <section name="Events">
      <h3>ApacheCon NA 2013</h3>
      <p>
        <a href="http://www.apache.org/events/current-event.html" title="ApacheCon" class="poweredBy">
          <img class="poweredBy"  alt="ApacheCon" src="http://www.apache.org/events/logos-banners/ApacheCon-2013-NorthAmerica/NA_square_20.png" title="Apache Con NA"/>
        </a>
      </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>Mirrors</th>
              <th>Checksum</th>
              <th>Signature</th>
            </tr>
            <tr>
              <td>Archiva ${archivaReleaseVersion} Standalone</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.md5">md5</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.md5">md5</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}-bin.zip">zip</a></td>
              <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}-bin.zip.md5">md5</a></td>
              <td><a href="http://www.apache.org/dist/archiva/${archivaLastSerieVersion}/binaries/apache-archiva-${archivaLastSerieVersion}-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>
