<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 from org.apache.maven.plugins:maven-site-plugin:3.9.0:CategorySummaryDocumentRenderer at 2020-04-20
 | Rendered using Apache Maven Fluido Skin 1.9
-->
<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.9.2" />
    <title>Apache Struts &#x2013; Generated Reports</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.9.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.9.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <header>
        <div id="banner">
          <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf-logo.gif"  alt="Apache Software Foundation"/></a></div>
          <div class="pull-right"><a href="http://struts.apache.org/" id="bannerRight"><img src="http://struts.apache.org/img/struts-logo.svg"  alt="Apache Struts"/></a></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2020-04-20</li>
      <li id="projectVersion" class="pull-right">Version: 2.6-SNAPSHOT</li>
      <li class="pull-right"><span class="divider">|</span>
<a href="http://struts.apache.org/" class="externalLink" title="Struts">Struts</a></li>
      <li class="pull-right"><a href="http://www.apache.org/" class="externalLink" title="Apache">Apache</a></li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
   <li class="nav-header">Top Site</li>
    <li><a href="http://struts.apache.org/" class="externalLink" title="Apache Struts"><span class="none"></span>Apache Struts</a></li>
   <li class="nav-header">Project Documentation</li>
    <li><a href="project-info.html" title="Project Information"><span class="icon-chevron-right"></span>Project Information</a></li>
    <li class="active"><a href="#"><span class="icon-chevron-down"></span>Project Reports</a>
     <ul class="nav nav-list">
      <li><a href="rat-report.html" title="Rat Report"><span class="none"></span>Rat Report</a></li>
      <li><a href="dependency-check-report.html" title="Dependency Check"><span class="none"></span>Dependency Check</a></li>
      <li><a href="dependency-updates-report.html" title="Dependency Updates Report"><span class="none"></span>Dependency Updates Report</a></li>
      <li><a href="plugin-updates-report.html" title="Plugin Updates Report"><span class="none"></span>Plugin Updates Report</a></li>
      <li><a href="property-updates-report.html" title="Property Updates Report"><span class="none"></span>Property Updates Report</a></li>
     </ul></li>
   <li class="nav-header">Modules</li>
    <li><a href="struts2-core/index.html" title="Struts 2 Core"><span class="none"></span>Struts 2 Core</a></li>
    <li><a href="struts2-plugins/index.html" title="Struts Plugins"><span class="none"></span>Struts Plugins</a></li>
    <li><a href="struts2-osgi-bundles/index.html" title="Struts OSGi Bundles"><span class="none"></span>Struts OSGi Bundles</a></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <hr />
            <div id="poweredBy">
              <div class="clear"></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>
        </header>
        <main id="bodyColumn"  class="span10" >
<section>
<h2><a name="Generated_Reports"></a>Generated Reports</h2>
<p>This document provides an overview of the various reports that are automatically generated by <a class="externalLink" href="http://maven.apache.org">Maven</a> . Each report is briefly described below.</p><section>
<h3><a name="Overview"></a>Overview</h3>
<table border="0" class="table table-striped">
<tr class="a">
<th>Document</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="rat-report.html">Rat Report</a></td>
<td>Report on compliance to license related source code policies</td></tr>
<tr class="a">
<td><a href="dependency-check-report.html">Dependency Check</a></td>
<td>Generates an aggregate report of all child Maven projects providing details on any published vulnerabilities within project dependencies. This report is a best effort and may contain false positives and false negatives.</td></tr>
<tr class="b">
<td><a href="dependency-updates-report.html">Dependency Updates Report</a></td>
<td>Provides details of the dependencies which have updated versions available.</td></tr>
<tr class="a">
<td><a href="plugin-updates-report.html">Plugin Updates Report</a></td>
<td>Provides details of the plugins used by this project which have newer versions available.</td></tr>
<tr class="b">
<td><a href="property-updates-report.html">Property Updates Report</a></td>
<td>Provides details of properties which control versions of dependencies and/or plugins, and indicates any newer versions which are available.</td></tr></table></section></section>
        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<div class="row span12">
            Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project
            logos are trademarks of The Apache Software Foundation.
            </div>
        </div>
      </div>
    </footer>
  </body>
</html>
