<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<html>
  <head>
    <title>Archiva :: Modules - </title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
                            <?xml version="1.0" encoding="UTF-8"?>
<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>
                                <?xml version="1.0" encoding="UTF-8"?>
<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
pageTracker._initData();
pageTracker._trackPageview();</script>
                    </head>
  <body class="composite">
    <div id="banner">
                  <a href="../../" id="bannerLeft">
    
                                            <img src="../../images/archiva.png" alt="" />
    
            </a>
                        <a href="http://www.apache.org/" id="bannerRight">
    
                                    <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
            <div class="xleft">
          
          <a href="http://www.apache.org/">Apache</a>
              &gt;
      
          <a href="../../">Archiva</a>
              &gt;
      
          Archiva :: Modules
                </div>
            <div class="xright">      
  

  
    
  
  
            &nbsp;| Last Published: 27 May 2011
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
                   <h5>Modules</h5>
        <ul>
              
    <li class="none">
              <a href="archiva-base/index.html">Archiva Base</a>
        </li>
              
    <li class="none">
              <a href="archiva-database/index.html">Archiva Database</a>
        </li>
              
    <li class="none">
              <a href="archiva-reporting/index.html">Archiva Reporting</a>
        </li>
              
    <li class="none">
              <a href="archiva-scheduled/index.html">Archiva Base :: Scheduled Tasks</a>
        </li>
              
    <li class="none">
              <a href="archiva-web/index.html">Archiva Web</a>
        </li>
          </ul>
          <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
            
            
            
      
            
      
            
      
              
            <li class="expanded">
              <a href="project-reports.html">Project Reports</a>
                <ul>
                  
    <li class="none">
              <a href="changelog.html">changelog</a>
        </li>
                  
    <li class="none">
              <a href="dev-activity.html">dev-activity</a>
        </li>
                  
    <li class="none">
              <a href="file-activity.html">file-activity</a>
        </li>
                  
    <li class="none">
              <a href="apidocs/index.html">JavaDocs</a>
        </li>
                  
    <li class="none">
              <strong>Maven Surefire Report</strong>
        </li>
                  
    <li class="none">
              <a href="xref/index.html">Source Xref</a>
        </li>
                  
    <li class="none">
              <a href="testapidocs/index.html">Test JavaDocs</a>
        </li>
                  
    <li class="none">
              <a href="xref-test/index.html">Test Source Xref</a>
        </li>
              </ul>
        </li>
          </ul>
                                       <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <script type="text/javascript">
function toggleDisplay(elementId) {
 var elm = document.getElementById(elementId + 'error');
 if (elm && typeof elm.style != "undefined") {
 if (elm.style.display == "none") {
 elm.style.display = "";
 document.getElementById(elementId + 'off').style.display = "none";
 document.getElementById(elementId + 'on').style.display = "inline";
 } else if (elm.style.display == "") { elm.style.display = "none";
 document.getElementById(elementId + 'off').style.display = "inline";
 document.getElementById(elementId + 'on').style.display = "none";
 } 
 } 
 }
</script><h2><a name="Summary"></a>Summary</h2><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><table class="bodyTable"><tr class="a"><th>Tests</th><th>Errors </th><th>Failures</th><th>Skipped</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td>0</td><td>0</td><td>0</td><td>0</td><td>0%</td><td>0</td></tr></table><br />Note: failures are anticipated and checked for with assertions while errors are unanticipated.<table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2006-2011
    
          The Apache Software Foundation
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
