<!DOCTYPE html>


<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src/site/xdoc/download.xml.vm
 | Rendered using Apache Maven Fluido Skin 1.11.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
    <title>Archiva &#x2013; Download Apache Archiva</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.11.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script src="./js/apache-maven-fluido-1.11.0.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">

    <!-- Matomo -->
    <script>
        var _paq = window._paq = window._paq || [];
                _paq.push(['disableCookies']);
                    _paq.push(['trackPageView']);
                    _paq.push(['enableLinkTracking']);
        
        (function() {
            var u="https://analytics.apache.org";
            _paq.push(['setTrackerUrl', u+'/matomo.php']);
            _paq.push(['setSiteId', '10']);
            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
            g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
        })();
    </script>
    <!-- End Matomo Code -->
  </head>
  <body class="topBarEnabled">
    <a href="https://github.com/apache/archiva">
      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
        src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png"
        alt="Fork me on GitHub">
    </a>
    <header id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
            <div class="container">
              <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
              </a>
          <nav class="nav-collapse">
            <ul class="nav">
      <li class="dropdown">
        <a 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 title="Downloads">Downloads</a></li>
            <li><a href="versions.html" title="Versions">Versions</a></li>
            <li><a href="mailing-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.2.10/" title="Release 2.2.10">Release 2.2.10</a></li>
                  <li><a href="docs/3.0.0-SNAPSHOT/" title="Dev 3.0.0-SNAPSHOT">Dev 3.0.0-SNAPSHOT</a></li>
              </ul>
            </li>
        </ul>
      </li>
      <li class="dropdown">
        <a 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 class="dropdown-submenu">
<a href="" title="Developer Reference">Developer Reference</a>
              <ul class="dropdown-menu">
                  <li><a href="ref/2.2.10/index.html" title="Archiva 2.2.10">Archiva 2.2.10</a></li>
                  <li><a href="ref/3.0.0-SNAPSHOT/index.html" title="Archiva 3.0.0-SNAPSHOT">Archiva 3.0.0-SNAPSHOT</a></li>
                  <li><a href="redback/core/3.0.0-SNAPSHOT/index.html" title="Redback 3.0.0-SNAPSHOT">Redback 3.0.0-SNAPSHOT</a></li>
              </ul>
            </li>
            <li><a href="redback/index.html" title="Redback">Redback</a></li>
            <li><a href="components/index.html" title="Archiva Components Project">Archiva Components Project</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 class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="https://www.apache.org/foundation/how-it-works.html" title="How Apache Works">How Apache Works</a></li>
            <li><a href="https://www.apache.org/foundation/" title="Foundation">Foundation</a></li>
            <li><a href="https://www.apache.org/foundation/sponsorship.html" title="Sponsoring Apache">Sponsoring Apache</a></li>
            <li><a href="https://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
        </ul>
      </li>
      <li class="dropdown">
        <a 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="ci-management.html" title="CI Management">CI Management</a></li>
                  <li><a href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a></li>
                  <li><a href="issue-management.html" title="Issue Management">Issue Management</a></li>
                  <li><a href="licenses.html" title="Licenses">Licenses</a></li>
                  <li><a href="team.html" title="Team">Team</a></li>
                  <li><a href="scm.html" title="Source Code Management">Source Code Management</a></li>
              </ul>
            </li>
        </ul>
      </li>
            </ul>
          </nav>
          <div class="nav-collapse">
<form id="search-form" action="https://www.google.com/search" method="get"  class="navbar-search pull-right" >
  <input value="https://archiva.apache.org/" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script>asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
          </div>
        </div>
      </div>
    </header>
    <div class="container">
      <header>
        <div id="banner">
          <div class="pull-left"><a href="index.html" id="bannerLeft"><img src="images/archiva.png"  alt="Apache Archiva" style="" /></a></div>
          <div class="pull-right"><a href="https://www.apache.org/" id="bannerRight"><img src="https://www.apache.org/images/asf_logo_wide_2016.png"  alt="Apache Software Foundation" style="" /></a></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
      <li class=""><a href="https://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 ">Download Apache Archiva</li>
        <li id="publishDate" class="pull-right">Last Published: 20 Mar 2023</li>
          </ul>
        </div>
      </header>
        <main id="bodyColumn" >

  
    <section>
<h2><a name="Download_Apache_Archiva_2.2.10"></a>Download Apache Archiva 2.2.10</h2>
      
<p>Archiva is distributed under the <a class="externalLink" href="https://www.apache.org/licenses/">Apache License, version 2.0</a>.</p>
      <section>
<h3><a name="System_Requirements"></a>System Requirements</h3>
        
<table border="0" class="table table-striped">
          
<tr class="a">
            
<td align="left"><b>JDK</b></td>
            
<td>1.8</td>
          </tr>
          
<tr class="b">
            
<td align="left"><b>No minimum requirement</b></td>
            
<td>The Archiva application is in itself about 50MB but will use more disk space to store repository contents</td>
          </tr>
          
<tr class="a">
            
<td align="left"><b>Operating System</b></td>
            
<td>Support for Linux, Mac OS, Solaris and Windows.  Tested on Windows XP SP2, Ubuntu Linux, and Mac OS X.</td>
          </tr>
        </table>
      </section>
      <a name="mirror"></a>
      <section>
<h3><a name="Mirror"></a>Mirror</h3>

        
<p>
          [if-any logo]
          <a href="[link]">
            <img src="[logo]" align="right" border="0" alt="logo" />
          </a>
          [end]
          The currently selected mirror is
          <b>[preferred]</b>.
          If you encounter a problem with this mirror,
          please select the other mirror.
        </p>

        <form action="[location]" method="get" id="SelectMirror" class="form-inline">
          Other mirrors:
          <select name="Preferred" class="input-xlarge">
            [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>

      </section>
      <section>
<h3><a name="Current_Release:_Archiva_2.2.10"></a>Current Release: Archiva 2.2.10</h3>
        
<p>
          This is the currently recommended version of Archiva.

          </p>
<ul>
            
<li><a href="./docs/2.2.10/release-notes.html">Release Notes</a></li>
            
<li><a href="./known-issues.html">Known Issues and Errata</a></li>
              
<li><a href="./security.html">Security Reports</a></li>
          </ul>
        
        
<p>
          </p>
<table border="0" class="table table-striped">
            <thead>
              
<tr class="a">
                
<th>Archiva 2.2.10 </th>
                
<th>File-Type</th>
                
<th>SHA256 Checksum</th>
                
<th>SHA512 Checksum</th>
                
<th>Signature</th>
              </tr>
            </thead>
            <tbody>
              
<tr class="b">
                
<td align="left">Archiva 2.2.10 Standalone</td>
                
<td><a href="[preferred]archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.tar.gz">tar.gz</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.tar.gz.sha256">sha256</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.tar.gz.sha512">sha512</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.tar.gz.asc">asc</a></td>
              </tr>
              
<tr class="a">
                
<td align="left"></td>
                
<td><a href="[preferred]archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.zip">zip</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.zip.sha256">sha256</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.zip.sha512">sha512</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10-bin.zip.asc">asc</a></td>
              </tr>
              
<tr class="b">
                
<td align="left">Archiva 2.2.10 WAR</td>
                
<td><a href="[preferred]archiva/2.2.10/binaries/apache-archiva-2.2.10.war">war</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10.war.sha256">sha256</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10.war.sha512">sha512</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/binaries/apache-archiva-2.2.10.war.asc">asc</a></td>
              </tr>
              
<tr class="a">
                
<td align="left">Archiva 2.2.10 Sources</td>
                
<td><a href="[preferred]archiva/2.2.10/src/apache-archiva-2.2.10-src.zip">source zip</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/src/apache-archiva-2.2.10-src.zip.sha256">sha256</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/src/apache-archiva-2.2.10-src.zip.sha512">sha512</a></td>
                
<td><a class="externalLink" href="https://www.apache.org/dist/archiva/2.2.10/src/apache-archiva-2.2.10-src.zip.asc">asc</a></td>
              </tr>
            </tbody>
          </table>
        

      </section>

        
      <section>
<h3><a name="Previous_Versions"></a>Previous Versions</h3>
        
<p>
          More releases are available in the <a class="externalLink" href="https://archive.apache.org/dist/archiva/">Apache Archiva Archives</a>
          or prior to the graduation from Maven, in the <a class="externalLink" href="https://archive.apache.org/dist/maven/binaries/">Apache Maven Archives</a>.
        </p>
      </section>
      <section>
<h3><a name="Verify_the_integrity_of_the_files"></a>Verify the integrity of the files</h3>
        
<p>
          We recommend that you verify the integrity of the downloaded files using the PGP signatures and SHA, MD5 checksums.

          The PGP signatures can be verified using PGP or GPG. First download the <a class="externalLink" href="https://www.apache.org/dist/archiva/KEYS">KEYS</a>
          as well as the asc signature file for the particular distribution. Make sure you get these files from
          <a class="externalLink" href="https://www.apache.org/dist/archiva">the main distribution directory</a>,
          rather than from a mirror. <br />
          Then verify the signatures using:
        </p>
          
<div>
<pre>
          % pgpk -a KEYS
          % pgpv $filename.tar.gz.asc
          or
          % pgp -ka KEYS
          % pgp $filename.tar.gz.asc
          or
          % gpg --import KEYS
          % gpg --verify $filename.tar.gz.asc
          </pre></div>
        
<p>
          Please use the SHA checksum for verification if available, use MD5 only for the older versions, that have no SHA checksum available.
          To verify the SHA signature on the files, you can use utilities for your platform. A Unix program called sha1sum or sha256sum (md5sum) is included in many
          Unix distributions. It is also available as part of <a class="externalLink" href="https://www.gnu.org/software/coreutils/">GNU Coreutils</a>.
          Windows users can get binary checksum utility e.g. from <a class="externalLink" href="https://www.slavasoft.com/hashcalc/">SlavaSoft</a>.
        </p>
      </section>
    </section>
  

        </main>
    </div>
    <hr/>
    <footer>
      <div class="container">
        <div class="row">
<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">
        &nbsp;
      </div>
      <div class="row">
      <p>
        <a href="https://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
        </p>
      </div>
        </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>
    </footer>
<script>
	if(anchors) {
	  anchors.add();
	}
</script>
  </body>
</html>