<!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="Date-Revision-yyyymmdd" content="20190430" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva Documentation &#x2013; Release Notes for Archiva 2.2.4</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>

    
              <!-- Google Analytics -->
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-140879-5']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
          </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                                  <a href="../../" 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="https://www.apache.org/images/asf_logo_wide_2016.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="Apache Archiva">
        Apache Archiva</a>
                    <span class="divider">/</span>
      </li>
            <li class="">
                    <a href="../../index.html" title="Apache Archiva">
        Apache Archiva</a>
                    <span class="divider">/</span>
      </li>
        <li class="active ">Release Notes for Archiva 2.2.4</li>
        
                
                    
                  <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2019-04-30</li>
              <li id="projectVersion" class="pull-right">
                    Version: 2.2.4
        </li>
            
                            </ul>
      </div>

                  
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Introduction</li>
                              
      <li>
  
                          <a href="quick-start.html" title="Quick Start">
          <i class="none"></i>
        Quick Start</a>
            </li>
                
      <li>
  
                          <a href="tour/index.html" title="Feature Tour">
          <i class="none"></i>
        Feature Tour</a>
            </li>
                
      <li class="active">
  
            <a href="#"><i class="none"></i>Release Notes</a>
          </li>
                
      <li>
  
                          <a href="../../download.html" title="Downloads">
          <i class="none"></i>
        Downloads</a>
            </li>
                              <li class="nav-header">Users Guide</li>
                              
      <li>
  
                          <a href="userguide/browsing.html" title="Browsing">
          <i class="none"></i>
        Browsing</a>
            </li>
                
      <li>
  
                          <a href="userguide/searching.html" title="Searching">
          <i class="none"></i>
        Searching</a>
            </li>
                
      <li>
  
                          <a href="userguide/delete-artifact.html" title="Deleting an Artifact">
          <i class="none"></i>
        Deleting an Artifact</a>
            </li>
                
      <li>
  
                          <a href="userguide/using-repository.html" title="Using as a repository">
          <i class="none"></i>
        Using as a repository</a>
            </li>
                
      <li>
  
                          <a href="userguide/deploy.html" title="Deploying to repository">
          <i class="none"></i>
        Deploying to repository</a>
            </li>
                
      <li>
  
                          <a href="userguide/virtual-repositories.html" title="Configuring Virtual Repositories">
          <i class="none"></i>
        Configuring Virtual Repositories</a>
            </li>
                
      <li>
  
                          <a href="userguide/rss.html" title="Rss Feeds in Archiva">
          <i class="none"></i>
        Rss Feeds in Archiva</a>
            </li>
                
      <li>
  
                          <a href="userguide/querying-artifacts.html" title="Querying Artifacts">
          <i class="none"></i>
        Querying Artifacts</a>
            </li>
                              <li class="nav-header">Administrators Guide</li>
                                                                                                                    
      <li>
  
                          <a href="adminguide/installing.html" title="Installing Archiva">
          <i class="icon-chevron-right"></i>
        Installing Archiva</a>
                  </li>
                
      <li>
  
                          <a href="adminguide/databases.html" title="Databases">
          <i class="none"></i>
        Databases</a>
            </li>
                
      <li>
  
                          <a href="adminguide/repositories-content-storage.html" title="Repositories Content Storage">
          <i class="none"></i>
        Repositories Content Storage</a>
            </li>
                                                                                                      
      <li>
  
                          <a href="adminguide/security.html" title="Security">
          <i class="icon-chevron-right"></i>
        Security</a>
                  </li>
                                                                                                                                                                                                                                                                                          
      <li>
  
                          <a href="adminguide/configuration.html" title="Archiva Configuration">
          <i class="icon-chevron-right"></i>
        Archiva Configuration</a>
                  </li>
                
      <li>
  
                          <a href="adminguide/webservices/rest.html" title="REST Apis">
          <i class="none"></i>
        REST Apis</a>
            </li>
                
      <li>
  
                          <a href="adminguide/configuration-files.html" title="Configuration Files">
          <i class="none"></i>
        Configuration Files</a>
            </li>
                
      <li>
  
                          <a href="adminguide/system-status.html" title="System Status">
          <i class="none"></i>
        System Status</a>
            </li>
                                                                                                      
      <li>
  
                          <a href="adminguide/logging.html" title="Log Files">
          <i class="icon-chevron-right"></i>
        Log Files</a>
                  </li>
                
      <li>
  
                          <a href="adminguide/reports.html" title="Reports">
          <i class="none"></i>
        Reports</a>
            </li>
                              <li class="nav-header">Customising Archiva</li>
                              
      <li>
  
                          <a href="customising/writing-consumer.html" title="Writing a Consumer Plugin">
          <i class="none"></i>
        Writing a Consumer Plugin</a>
            </li>
                              <li class="nav-header">More Information</li>
                              
      <li>
  
                          <a href="http://cwiki.apache.org/confluence/display/ARCHIVA/Index" class="externalLink" title="Archiva Wiki">
          <i class="none"></i>
        Archiva Wiki</a>
            </li>
                              <li class="nav-header">ASF</li>
                              
      <li>
  
                          <a href="http://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works">
          <i class="none"></i>
        How Apache Works</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/" class="externalLink" title="Foundation">
          <i class="none"></i>
        Foundation</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache">
          <i class="none"></i>
        Sponsoring Apache</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                              <li class="nav-header">Project Documentation</li>
                                                                                                  
      <li>
  
                          <a href="project-info.html" title="Project Information">
          <i class="icon-chevron-right"></i>
        Project Information</a>
                  </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="http://archiva.apache.org/docs/2.2.4/" 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>
          
          <hr />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
               
        
        
        <div id="twitter">
    
    <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="left" data-size="medium" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

        </div>
                   <div class="clear"></div>
                            <div class="clear"></div>
                             <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>
                  </div>
          </div>
        </div>
        
                        
        <div id="bodyColumn"  class="span10" >
                                  
            <!-- 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="section">
<h2><a name="Release_Notes_for_Archiva_2.2.4"></a>Release Notes for Archiva 2.2.4</h2>
<p>The Apache Archiva team is pleased to announce the release of Archiva 2.2.4. Archiva is <a class="externalLink" href="http://archiva.apache.org/download.html"> available for download from the web site</a>.</p>
<p>Archiva is an application for managing one or more remote repositories, including administration, artifact handling, browsing and searching.</p>
<p>If you have any questions, please consult:</p>
<ul>
<li>the web site: <a class="externalLink" href="http://archiva.apache.org/">http://archiva.apache.org/</a></li>
<li>the archiva-user mailing list: <a class="externalLink" href="http://archiva.apache.org/mail-lists.html">http://archiva.apache.org/mail-lists.html</a></li></ul>
<div class="section">
<h3><a name="New_in_Archiva_2.2.4"></a>New in Archiva 2.2.4</h3>
<p>Apache Archiva 2.2.4 is a bug fix release:</p>
<ul>
<li>Fixes for handling of artifacts</li>
<li>Improved validation of REST calls</li></ul>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<p>No API changes or known side effects.</p></div>
<div class="section">
<h4><a name="List_of_Changes_in_Archiva_2.2.4"></a>List of Changes in Archiva 2.2.4</h4>
<p>Released: <b>2019-04-30</b></p></div>
<div class="section">
<h4><a name="New_Feature"></a>New Feature</h4>
<ul>
<li>There are no new features in this release.</li></ul></div>
<div class="section">
<h4><a name="Improvements"></a>Improvements</h4>
<ul>
<li>Adding additional validation to REST service calls for artifact upload</li></ul></div>
<div class="section">
<h4><a name="Bug_Fix"></a>Bug Fix</h4>
<ul>
<li>[MRM-1972] Stored XSS in Web UI Organization Name</li>
<li>[MRM-1966] Repository-purge not working</li>
<li>[MRM-1958] Purge by retention count deletes files but leaves history on website.</li>
<li>[MRM-1929] Repository purge is not reflected in index</li></ul></div></div></div>
<div class="section">
<h2><a name="Previous_Release_Notes"></a>Previous Release Notes</h2>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.3"></a>Release Notes for Archiva 2.2.3</h3>
<div class="section">
<h4><a name="New_in_Archiva_2.2.3"></a>New in Archiva 2.2.3</h4>
<p>Apache Archiva 2.2.3 is a bug fix release:</p>
<ul>
<li>Some fixes for the REST API were added to detect requests from unknown origin</li>
<li>Some bugfixes were added</li></ul></div>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<ul>
<li>The REST services are now checking for the origin of the requests by analysing Origin and Referer header of the HTTP requests and adding an validation token to the Header. This prevents requests from malicious sites if they are open in the same browser. If you use the REST services from other clients you may change the behaviour with the new configuration properties for the redback security (<tt>rest.csrffilter.*</tt>, <tt>rest.baseUrl</tt>). For more information see <a href="./adminguide/customising-security.html">Archiva Security Configuration</a> and the <a href="/redback/integration/rest.html">Redback REST documentation </a>.
<p><b>Note:</b> If your archiva installation is behind a reverse proxy or load balancer, it may be possible that the Archiva Web UI does not load after the upgrade. If this is the case you may access the WebUI via localhost or edit archiva.xml manually. In the &quot;Redback Runtime Configuration&quot; properties you have to enter the base URLs of your archiva installation to the <tt>rest.baseUrl</tt> field.</p></li>
<li>Archiva uses redback for authentication and authorization in version 2.6</li></ul></div>
<div class="section">
<h4><a name="Change_List"></a>Change List</h4>
<p>Released: <b>2017-05-13</b></p>
<div class="section">
<h5><a name="New_Feature"></a>New Feature</h5></div>
<div class="section">
<h5><a name="Improvement"></a>Improvement</h5>
<ul>
<li>[MRM-1925] - Make User-Agent header configurable for HTTP requests</li>
<li>[MRM-1861], [MRM-1924] - Increasing timeouts for repository check</li>
<li>[MRM-1937] - Prevent creating initial admin user with wrong name.</li>
<li>Adding origin header validation checks for REST requests</li></ul></div>
<div class="section">
<h5><a name="Bug_Fix"></a>Bug Fix</h5>
<ul>
<li>[MRM-1859] - Error upon viewing 'Artifacts' tab when browsing an artifact</li>
<li>[MRM-1874] - Login Dialog triggers multiple events (+messages)</li>
<li>[MRM-1908] - Logged on users can write any repository</li>
<li>[MRM-1909] - Remote repository check fails for https://repo.maven.apache.org/maven2</li>
<li>[MRM-1923] - Fixing bind issue with certain ldap servers, when user not found</li>
<li>[MRM-1926] - Invalid checksum files in Archiva repository after download from remote repository</li>
<li>[MRM-1928] - Bad redirect URL when using Archiva through HTTP reverse proxy</li>
<li>[MRM-1933] - No message body writer has been found for class org.apache.archiva.rest.services.ArchivaRestError</li>
<li>[MRM-1940] - Slashes appended to remote repo url</li></ul></div></div></div>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.1"></a>Release Notes for Archiva 2.2.1</h3>
<div class="section">
<h4><a name="New_in_Archiva_2.2.1"></a>New in Archiva 2.2.1</h4>
<p>Apache Archiva 2.2.1 is a bugs fix release:</p>
<p>NOTE: jdk 1.7 is now prerequisite with Apache Archiva 2.2.1</p></div>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<p>If using the Cassandra backend, the metadatafacet column 'key' has been renamed to 'facetKey' in 2.2.0 so you should copy the data to the new column manually. If upgrading from earlier versions of Archiva, the list of libraries in wrapper.conf has changed. If you have customized your copy of wrapper.conf, please update it for compatibility with the version distributed with the current release. As the database storage has been removed, you can remove the JNDI entry for jdbc/archiva.</p>
<p>Refer to the Upgrading Archiva guide for more information.</p></div>
<div class="section">
<h4><a name="List_of_Changes"></a>List of Changes</h4>
<div class="section">
<h5><a name="Improvement"></a>Improvement</h5>
<ul>
<li>[MRM-1201] - Artifact upload success message should mention the classifier</li>
<li>[MRM-1906] - Allowing filtering of LDAP groups</li></ul></div>
<div class="section">
<h5><a name="Bug_Fix"></a>Bug Fix</h5>
<ul>
<li>[MRM-1873] - archiva doesn't recognise ldap-group to ldap-users mapping</li>
<li>[MRM-1877] - Checksum files always recreated</li>
<li>[MRM-1879] - Bug in create-missing-checksum consumer</li>
<li>[MRM-1886] - View Artifact Content Action does not Work</li>
<li>[MRM-1887] - Syntax error in DOAP file release section; wrong bug- database URL</li>
<li>[MRM-1892] - Only One Page of Proxy Connector Rules Shown</li>
<li>[MRM-1893] - Please delete old releases from mirroring system</li>
<li>[MRM-1896] - Invalid link to license</li>
<li>[MRM-1914] - Maven cannot find dependency</li></ul></div></div></div>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.0"></a>Release Notes for Archiva 2.2.0</h3>
<div class="section">
<h4><a name="New_in_Archiva_2.2.0"></a>New in Archiva 2.2.0</h4>
<p>Apache Archiva 2.2.0 is a bugs fix release:</p>
<p>NOTE: jdk 1.7 is now prerequisite with Apache Archiva 2.2.0</p></div>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<p>If using the Cassandra backend, the metadatafacet column 'key' has been renamed to 'facetKey' in 2.2.0 so you should copy the data to the new column manually. If upgrading from earlier versions of Archiva, the list of libraries in wrapper.conf has changed. If you have customized your copy of wrapper.conf, please update it for compatibility with the version distributed with the current release. As the database storage has been removed, you can remove the JNDI entry for jdbc/archiva. After upgrading from a previous version, you will have to run a full scan to populate the new JCR Repository. This will be done on first start of Archiva.</p>
<p>Refer to the Upgrading Archiva guide for more information.</p></div>
<div class="section">
<h4><a name="List_of_Changes_in_Archiva_2.2.0"></a>List of Changes in Archiva 2.2.0</h4>
<div class="section">
<h5><a name="New_Feature"></a>New Feature</h5>
<ul>
<li>[MRM-1867] - Adding a find jar by checksum functionality to the REST api</li></ul></div>
<div class="section">
<h5><a name="Improvement"></a>Improvement</h5>
<ul>
<li>[MRM-1390] - Generic metadata should be searcheable in Archiva search</li>
<li>[MRM-1844] - Allow LDAP groupOfNames</li></ul></div>
<div class="section">
<h5><a name="Bug_Fix"></a>Bug Fix</h5>
<ul>
<li>[MRM-770] - Archiva web client does not recognize classifier</li>
<li>[MRM-813] - Audit log is reporting &quot;Modify File (proxied)&quot; when no proxy connectors exist and the file has not changed</li>
<li>[MRM-837] - Cannot download SNAPSHOT version</li>
<li>[MRM-935] - Archiva doesn't supports artifact with <i>version</i>SNAPSHOT<i>/version</i></li>
<li>[MRM-1145] - RSS tests do not correctly check responses</li>
<li>[MRM-1311] - Logging in ArtifactMissingChecksumsConsumer does not appear in the logs even if configured properly</li>
<li>[MRM-1486] - ldap.config.mapper.attribute.user.filter using ldap not working correctly with commas.</li>
<li>[MRM-1767] - When selecting a specific repository to browse, I get an error that I don't have sufficient privileges.</li>
<li>[MRM-1807] - Archiva wrapper fail to start</li>
<li>[MRM-1810] - LDAP - groups config not available in Users Runtime Configuration - Properties</li>
<li>[MRM-1811] - Users - Manage section: pagination needs to change</li>
<li>[MRM-1846] - Regression in 2.0.1 : uniqueVersion false not supported</li>
<li>[MRM-1848] - download links for files mult-dot extensions incorrect in Browse view</li>
<li>[MRM-1851] - generic metadata GUI broken</li>
<li>[MRM-1860] - ClassNotFound exception with JBoss</li>
<li>[MRM-1863] - RepositoryGroup URL is not build using the Application URL</li>
<li>[MRM-1864] - Default configuration for central should now use SSL</li>
<li>[MRM-1871] - ConcurrentModificationException in DefaultRepositoryProxyConnectors</li>
<li>[MRM-1873] - archiva doesn't recognise ldap-group to ldap-users mapping</li></ul></div>
<div class="section">
<h5><a name="Task"></a>Task</h5>
<ul>
<li>[MRM-1359] - Remove Maven 1.x functionality</li>
<li>[MRM-1865] - remove isPermanent from Consumer API</li></ul></div></div></div></div>
<div class="section">
<h2><a name="History"></a>History</h2>
<p>Archiva was started in November 2005, building a simple framework on top of some existing repository conversion tools within the Maven project. Initial development focused on repository conversion, error reporting, and indexing. From January 2006 a web application was started to visualise the information and to start incorporating functionality from the unmaintained maven-proxy project.</p>
<p>Development continued through many stops and starts. Initial versions of Archiva were built from source by contributors, and the first alpha version was not released until April 2007. Some significant changes were made to improve performance and functionality in June 2007 and over the next 6 months and a series of alpha and beta releases, a concerted effort was made to release the 1.0 version.</p>
<p>Archiva became an Apache &quot;top level project&quot; in March 2008.</p></div>
                  </div>
            </div>
          </div>

    <hr/>

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

                                                                  
<div class="row span12">Apache Archiva :: Documentation, Archiva :: Documentation, Apache, the Apache feather logo, and the Apache Archiva :: Documentation project logos are trademarks of The Apache Software Foundation.</div>
                                                          
<div class="row span12">
  <a href="http://archiva.apache.org/docs/2.2.4/privacy-policy.html">Privacy Policy</a>
</div>
                  
        
          
    
    
                
    <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>
