<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia 
 | Rendered using Apache Maven Fluido Skin 1.3.1
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="author" content="Brett Porter" />
    <meta name="Date-Revision-yyyymmdd" content="20140410" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva - 
    The Build Artifact Repository Manager</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>

                          
        
<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
                      
        
<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
        pageTracker._initData();
        pageTracker._trackPageview();</script>
          
    <!-- move js and css to 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 class="topBarEnabled">
          
                        
                    
                

    <div id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
                                  <div class="container"><div class="nav-collapse">
            
                
                                <ul class="nav">
                          <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="index.html"  title="About">About</a>
</li>
                  
                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
</li>
                  
                      <li>      <a href="versions.html"  title="Versions">Versions</a>
</li>
                  
                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
</li>
                  
                      <li>      <a href="security.html"  title="Security">Security</a>
</li>
                  
                      <li class="dropdown-submenu">
                                      <a href=""  title="Documentation">Documentation</a>
              <ul class="dropdown-menu">
                                  <li>      <a href="docs/2.0.1/"  title="Release 2.0.1">Release 2.0.1</a>
</li>
                                  <li>      <a href="docs/1.3.6/"  title="Preview 1.3.6">Preview 1.3.6</a>
</li>
                                  <li>      <a href="docs/2.0.2-SNAPSHOT/"  title="Dev 2.0.2-SNAPSHOT">Dev 2.0.2-SNAPSHOT</a>
</li>
                              </ul>
            </li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
</li>
                  
                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
</li>
                  
                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
</li>
                  
                      <li>      <a href="redback"  title="Redback">Redback</a>
</li>
                  
                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
</li>
                  
                      <li class="dropdown-submenu">
                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
              <ul class="dropdown-menu">
                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
</li>
                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
</li>
                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
</li>
                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
</li>
                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
</li>
                              </ul>
            </li>
                  
                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
</li>
                  
                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
</li>
                  
                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
</li>
                  
                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
</li>
                  
                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li class="dropdown-submenu">
                                      <a href="project-info.html"  title="Project Information">Project Information</a>
              <ul class="dropdown-menu">
                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
</li>
                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
</li>
                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
</li>
                                  <li>      <a href="license.html"  title="Project License">Project License</a>
</li>
                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
</li>
                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
</li>
                              </ul>
            </li>
                          </ul>
      </li>
                  </ul>
          
                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
    
  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
                                                                            
                   
                      </div>
          
        </div>
      </div>
    </div>
    
        <div class="container">
          <div id="banner">
        <div class="pull-left">
                                                  <a href="index.html" id="bannerLeft">
                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
                    <span class="divider">/</span>
      </li>
                <li class="">
                    <a href="./" title="Archiva">
        Archiva</a>
                    <span class="divider">/</span>
      </li>
        <li class="active ">
    The Build Artifact Repository Manager</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 10 Apr 2014</li>
            
                            </ul>
      </div>

      
                
        <div id="bodyColumn" >
                                  
            <!-- ~ 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. -->
  
    
<div class="newsBox">
    
<div class="hero-unit">
      <span class="bignumber badge badge-warning">NEW</span>
      
<p><b>26th March 2014 release of 2.0.1. See <a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/tour/index.html">Quick Tour</a></b></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 src="http://archiva.apache.org/docs/2.0.1/images/ldap-configuration.png" alt="" height="120px" />
              
<div class="carousel-caption">
                
<p>Dynamic LDAP Configuration.</p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/adminguide/redback-runtime-configuration.html">View all.</a></p>
              </div>
            </div>
            
<div class="item">
              <img src="http://archiva.apache.org/docs/2.0.1/images/ldap-group-roles-mapping.png" alt="" />
              
<div class="carousel-caption">
                
<p>Dynamic LDAP Group-Roles mapping Configuration.</p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/adminguide/redback-runtime-configuration.html">View all.</a></p>
              </div>
            </div>
            
<div class="item">
              <img src="http://archiva.apache.org/docs/2.0.1/images/tour/project-info.png" alt="" />
              
<div class="carousel-caption">
                
<p>Informative display for artifacts stored in the repository.</p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/tour/index.html">View all.</a></p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/index.html">View new documentation.</a></p>
              </div>
            </div>
            
<div class="item">
              <img src="http://archiva.apache.org/docs/2.0.1/images/tour/search-form.png" alt="" />
              
<div class="carousel-caption">
                
<p>User-friendly browsing interface, and powerful search functionalities.</p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/tour/index.html">View all.</a></p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/index.html">View new documentation.</a></p>
              </div>
            </div>
            
<div class="item">
              <img src="http://archiva.apache.org/docs/2.0.1/images/tour/search-results.png" alt="" />
              
<div class="carousel-caption">
                
<p>Filterable search results.</p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/tour/index.html">View all.</a></p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/index.html">View new documentation.</a></p>
              </div>
            </div>
            
<div class="item">
              <img src="http://archiva.apache.org/docs/2.0.1/images/tour/browse.png" alt="" />
              
<div class="carousel-caption">
                
<p>Browse interface.</p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/tour/index.html">View all.</a></p>
                
<p><a class="externalLink" href="http://archiva.apache.org/docs/2.0.1/index.html">View new documentation.</a></p>
              </div>
            </div>


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

          </div>

          <!-- Carousel nav -->
          <a name="carousel-prev" class="left carousel-control" id="carousel-prev">&#x2039;</a>
          <a name="carousel-next" class="right carousel-control" id="carousel-next">&#x203a;</a>
        </div>
    </div>
    
<div class="section">
<h2>Apache Archiva&#x99;: The Build Artifact Repository Manager<a name="Apache_Archiva:_The_Build_Artifact_Repository_Manager"></a></h2>
      
<p>
         Apache Archiva&#x99; 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 class="externalLink" href="http://maven.apache.org">Maven</a>,
         <a class="externalLink" href="http://continuum.apache.org/">Continuum</a>,
         and <a class="externalLink" 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&#x85; and many more! Get the
         latest updates, follow us on twitter <a class="externalLink" 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/2.0.1/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="" />
              <b>Latest stable release:</b>
            </span>
            <span class="button mainalign">
              <a href="#a" class="btn btn-primary btn-medium" style="margin-bottom: 5px;" id="openDialogRelease">Get Archiva 2.0.1 <span style="font-size:smaller;color:#F89406">26th March 2014</span>
              </a>
            </span>
            <br />
                        <span class="expand" style="width: 200px; display: block; float: left;">
              <img src="images/collapsed.gif" width="7" height="7" alt="" />
              <b>Latest preview release:</b>
            </span>
            <span class="button mainalign">
              <a href="#a" class="btn btn-primary btn-medium" style="margin-bottom: 5px;" id="openDialogPreview">Get Archiva 1.3.6 <span style="font-size:smaller;color:#F89406">31 May 2013</span>
              </a>
            </span>
            <br />
                        <span class="expand">
              <img src="images/collapsed.gif" width="7" height="7" alt="" />
              <a href="download.html"><b>All downloads</b></a>
            </span>
          </p>
        </div>
      </div>

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

          
<p>
            <a href="docs/2.0.1/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/2.0.1/quick-start.html">quick start guide</a>
            <br />
            <img src="images/collapsed.gif" width="7" height="7" alt="" />
            Read the <a href="docs/2.0.1/userguide/index.html">users guide</a> and <a href="docs/2.0.1/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 class="externalLink" 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>
        
<div class="section">
<h2>Videos<a name="Videos"></a></h2>
        
<div class="section">
<div class="section">
<h4>Quick start<a name="Quick_start"></a></h4>
        
<p align="center">
          <iframe width="420" height="315" src="http://www.youtube.com/embed/kG349qooN8E" frameborder="0" allowfullscreen=""></iframe>
        </p>
        </div>
<div class="section">
<h4>Browsing/Uploading/Searching<a name="BrowsingUploadingSearching"></a></h4>
        
<p align="center">
          <iframe width="420" height="315" src="http://www.youtube.com/embed/y4DoLCfYR-A" frameborder="0" allowfullscreen=""></iframe>
        </p>
      </div>

    </div></div></div>

    
<div class="section">
<h2>License<a name="License"></a></h2>
      
<p>
        Archiva is distributed under the <a class="externalLink" href="http://www.apache.org/licenses/">Apache License, version 2.0</a>
      </p>
    </div>
    
<div class="section">
<h2>Thanks<a name="Thanks"></a></h2>
      
<p>
        We would like to thank all the <a class="externalLink" 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 class="externalLink" href="http://www.apache.org/foundation/sponsorship.html">sponsorship</a> page.
      </p>
    </div>

    
<div class="section">
<h2>Events<a name="Events"></a></h2>
      
<div class="section">
<h3>ApacheCon NA 2013<a name="ApacheCon_NA_2013"></a></h3>
      
<p>
        <a class="poweredBy" href="http://www.apache.org/events/current-event.html" title="ApacheCon">
          <img src="http://www.apache.org/events/logos-banners/ApacheCon-2013-NorthAmerica/NA_square_20.png" class="poweredBy" alt="ApacheCon" title="Apache Con NA" />
        </a>
      </p>
    </div></div>

    
<div class="section">
<h2>Resources<a name="Resources"></a></h2>
      
<p>
        Need more? Try some of these resources.
      </p>
      
<div>
        
<div class="section">
<h3>Books<a name="Books"></a></h3>
        
<div style="margin-left: auto; margin-right: auto; text-align: center">
          
<div style="float: left; width: 50%;">
            
<p>
              <a class="externalLink" href="http://www.packtpub.com/apache-maven-2-effective-implementations/book"><img src="images/books/apache_maven_2_effective_implementation.jpg" alt="" /></a><br />
              <a class="externalLink" 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 class="externalLink" href="http://www.wakaleo.com/java-power-tools"><img src="images/books/java_power_tools.gif" alt="" /></a><br />
              <a class="externalLink" 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">
        </div>
<div class="section">
<h3>Articles, Presentations and Tutorials<a name="Articles_Presentations_and_Tutorials"></a></h3>
        
<ul>
          
<li>
            <a class="externalLink" href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=archiva">Archiva 1.1.1 Tutorial in Spanish!</a> - Video also available <a class="externalLink" href="http://www.adictosaltrabajo.com/detalle-noticia.php?noticia=61">here</a> - (&#xc1;ngel Garc&#xed;a Jerez; September 2008)
          </li>
        </ul>
      </div>
    </div></div>

      
<div id="dialogRelease" class="modal hide fade">
        
<div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#xd7;]</button>
          
<h1>Archiva 2.0.1</h1>
        </div>
        
<div class="modal-body">
          
<p>
          This is the recommended latest release of Archiva.
          </p>
          
<table border="0" class="table table-striped">
            
<tr class="a">
              
<th> </th>
              
<th>Mirrors</th>
              
<th>Checksum</th>
              
<th>Signature</th>
            </tr>
            
<tr class="b">
              
<td>Archiva 2.0.1 Standalone</td>
              
<td><a href="[preferred]archiva/2.0.1/binaries/apache-archiva-2.0.1-bin.zip">zip</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.0.1/binaries/apache-archiva-2.0.1-bin.zip.md5">md5</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.0.1/binaries/apache-archiva-2.0.1-bin.zip.asc">asc</a></td>
            </tr>
            
<tr class="a">
              
<td>Archiva 2.0.1 WAR</td>
              
<td><a href="[preferred]archiva/2.0.1/binaries/apache-archiva-2.0.1.war">war</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.0.1/binaries/apache-archiva-2.0.1.war.md5">md5</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.0.1/binaries/apache-archiva-2.0.1.war.asc">asc</a></td>
            </tr>
          </table>

        </div>
        
<div class="modal-footer">
          
<div class="row">
            
<div class="pull-rigth">
              <a href="docs/2.0.1/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>
      
<div id="dialogPreview" class="modal hide fade">
        
<div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#xd7;]</button>
          
<h1>Archiva 1.3.6</h1>
        </div>
        
<div class="modal-body">
          
<p>This is the last release of the previous Archiva development series.</p>
          
<table border="0" class="table table-striped">
            
<tr class="a">
              
<th> </th>
              
<th>Mirrors</th>
              
<th>Checksum</th>
              
<th>Signature</th>
            </tr>
            
<tr class="b">
              
<td>Archiva 1.3.6 Standalone</td>
              
<td><a href="[preferred]archiva/1.3.6/binaries/apache-archiva-1.3.6-bin.zip">zip</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.6/binaries/apache-archiva-1.3.6-bin.zip.md5">md5</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.6/binaries/apache-archiva-1.3.6-bin.zip.asc">asc</a></td>
            </tr>
            
<tr class="a">
              
<td>Archiva 1.3.6 WAR</td>
              
<td><a href="[preferred]archiva/1.3.6/binaries/apache-archiva-1.3.6.war">war</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.6/binaries/apache-archiva-1.3.6.war.md5">md5</a></td>
              
<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.6/binaries/apache-archiva-1.3.6.war.asc">asc</a></td>
            </tr>
          </table>
        </div>
        
<div class="modal-footer">
          
<p><a href="docs/1.3.6/release-notes.html">Release Notes</a> | <a href="download.html">More downloads or change mirror.</a></p>
        </div>
      </div>

  

                  </div>
          </div>

    <hr/>

    <footer>
            <div class="container">
                      <div class="row">
                              <p >Copyright &copy;                    2006&#x2013;2014
                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
            All rights reserved.      
                    
      </p>
        </div>

                                                                  
<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
                                                          
<div class="row pull-left">
  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
</div>
                  
                <p id="poweredBy" class="pull-right">
                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
              </p>
        
          
    
    
                
    <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
    </div>
        </div>
    </footer>
        </body>
</html>