<?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>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>${archivaReleaseDate} release of ${archivaReleaseVersion} See <a href="http://archiva.apache.org/docs/${archivaReleaseVersion}/tour/index.html">Quick Tour</a></strong></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="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="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="mail-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="[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}.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>
