<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











<html>
  <head>
    <title>Apache Anakia - Generated Reports</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" />
    <link rel="alternate" href="http://feeds.feedburner.com/ApacheVelocitySiteNews" type="application/rss+xml" title="Apache Anakia - Generated Reports News" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      </head>
  <body class="composite">
    <div id="banner">
                  <a href="../../../" id="bannerLeft">
    
                                            <img src="images/velocity_project_wide.png" alt="" />
    
            </a>
                          <span id="bannerRight">
    
            <p>Apache Anakia</p>
    
            </span>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
    
            <div class="xleft">
          
          <a href="http://www.apache.org/">Apache</a>
              &gt;
      
          <a href="../../../">Velocity</a>
              &gt;
      
          Anakia
                </div>
            <div class="xright">      <a href="../../../engine/devel/">Engine</a>
          |
          <a href="../../../tools/devel/">Tools</a>
          |
          <a href="../../devel/">Anakia</a>
          |
          <a href="../../../texen/devel/">Texen</a>
          |
          <a href="../../../docbook/">DocBook</a>
          |
          <a href="../../../dvsl/devel/">DVSL</a>
          
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
    
                   <h5>Anakia</h5>
        <ul>
              
    <li class="none">
              <a href="index.html">General</a>
        </li>
              
    <li class="none">
              <a href="../../../download.cgi">Download</a>
        </li>
          </ul>
          <h5>Developers</h5>
        <ul>
              
    <li class="none">
              <a href="license.html">License</a>
        </li>
              
    <li class="none">
              <a href="apidocs/index.html">Javadoc</a>
        </li>
              
    <li class="none">
              <a href="changes-report.html">Changes</a>
        </li>
              
    <li class="none">
              <a href="jira-report.html">Resolved Issues</a>
        </li>
              
    <li class="none">
              <a href="http://svn.apache.org/viewvc/velocity/anakia/trunk/">Source Code Repository</a>
        </li>
          </ul>
          <h5>Community</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/">Wiki</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/GetInvolved">Get Involved</a>
        </li>
              
    <li class="none">
              <a href="../../../contact.html">Mailing Lists</a>
        </li>
          </ul>
          <h5>Velocity Development</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/CodeStandards">Coding Standards</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/DocumentationGuidelines">Documentation Guidelines</a>
        </li>
              
    <li class="none">
              <a href="https://issues.apache.org/jira/browse/ANAKIA">Issues</a>
        </li>
              
    <li class="none">
              <a href="../../../who-we-are.html">Who we are</a>
        </li>
          </ul>
          <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
            <li class="expanded">
              <strong>Project Reports</strong>
                <ul>
                  
    <li class="none">
              <a href="changelog.html">Change Log</a>
        </li>
                  
    <li class="none">
              <a href="changes-report.html">Changes Report</a>
        </li>
                  
    <li class="none">
              <a href="dev-activity.html">Developer 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">
              <a href="jira-report.html">Jira Report</a>
        </li>
                  
    <li class="none">
              <a href="xref/index.html">Source Xref</a>
        </li>
                  
    <li class="none">
              <a href="taglist.html">Tag List</a>
        </li>
                  
    <li class="none">
              <a href="xref-test/index.html">Test Source Xref</a>
        </li>
              </ul>
        </li>
          </ul>
                                             
                        
                        
                        <a class="poweredBy" href="../../../" title="Apache Velocity" ><img class="poweredBy" alt="Apache Velocity" src="images/pbv90x30.png" /></a>
                                
                        
                        
                        <a class="poweredBy" href="../../../rss/news.rss" title="Velocity News Feed" ><img class="poweredBy" alt="Velocity News Feed" src="images/feed-icon-24x24.jpg" /></a>
                    

           
  

  
    
  
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>Generated Reports</h2><p>This document provides an overview of the various reports that are automatically generated by <a href="http://maven.apache.org" class="externalLink">Maven</a> Each report is briefly described below.</p><div class="section"><h3>Overview</h3><table class="bodyTable"><tr class="a"><th>Document</th><th>Description</th></tr><tr class="b"><td><a href="changelog.html">Change Log</a></td><td>Generated change log report from SCM.</td></tr><tr class="a"><td><a href="changes-report.html">Changes Report</a></td><td>Changes Report on Releases of the Project.</td></tr><tr class="b"><td><a href="dev-activity.html">Developer Activity</a></td><td>Generated developer activity report from SCM.</td></tr><tr class="a"><td><a href="file-activity.html">File Activity</a></td><td>Generate file activity report from SCM.</td></tr><tr class="b"><td><a href="apidocs/index.html">JavaDocs</a></td><td>JavaDoc API documentation.</td></tr><tr class="a"><td><a href="jira-report.html">Jira Report</a></td><td>Report on Issues from the JIRA Issue Tracking System.</td></tr><tr class="b"><td><a href="xref/index.html">Source Xref</a></td><td>HTML based, cross-reference version of Java source code.</td></tr><tr class="a"><td><a href="taglist.html">Tag List</a></td><td>Report on various tags found in the code.</td></tr><tr class="b"><td><a href="xref-test/index.html">Test Source Xref</a></td><td>HTML based, cross-reference version of Java test source code.</td></tr></table></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2007
    
          The Apache Software Foundation
          
  

  
    
  
  
    
             Last Published: 2007-05-01 13:24:40
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
