<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 from org.codehaus.mojo:versions-maven-plugin:2.7:property-updates-report 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; Property Updates Report</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">Parent Project</li>
    <li><a href="../index.html" title="Struts 2"><span class="none"></span>Struts 2</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><a href="project-reports.html" title="Project Reports"><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 class="active"><a href="#"><span class="none"></span>Property Updates Report</a></li>
     </ul></li>
   <li class="nav-header">Modules</li>
    <li><a href="struts2-async-plugin/index.html" title="Struts 2 Async Plugin"><span class="none"></span>Struts 2 Async Plugin</a></li>
    <li><a href="struts2-bean-validation-plugin/index.html" title="Struts 2 Bean Validation Plugin"><span class="none"></span>Struts 2 Bean Validation Plugin</a></li>
    <li><a href="struts2-cdi-plugin/index.html" title="Struts 2 CDI Plugin"><span class="none"></span>Struts 2 CDI Plugin</a></li>
    <li><a href="struts2-config-browser-plugin/index.html" title="Struts 2 Configuration Browser Plugin"><span class="none"></span>Struts 2 Configuration Browser Plugin</a></li>
    <li><a href="struts2-convention-plugin/index.html" title="Struts 2 Convention Plugin"><span class="none"></span>Struts 2 Convention Plugin</a></li>
    <li><a href="struts2-dwr-plugin/index.html" title="Struts 2 DWR Plugin"><span class="none"></span>Struts 2 DWR Plugin</a></li>
    <li><a href="struts2-embeddedjsp-plugin/index.html" title="DEPRECATED: Struts 2 Embedded JSP Plugin"><span class="none"></span>DEPRECATED: Struts 2 Embedded JSP Plugin</a></li>
    <li><a href="struts2-gxp-plugin/index.html" title="Struts 2 GXP Plugin"><span class="none"></span>Struts 2 GXP Plugin</a></li>
    <li><a href="struts2-jasperreports-plugin/index.html" title="Struts 2 Jasper Reports Plugin"><span class="none"></span>Struts 2 Jasper Reports Plugin</a></li>
    <li><a href="struts2-javatemplates-plugin/index.html" title="Struts 2 Java Templates Plugin"><span class="none"></span>Struts 2 Java Templates Plugin</a></li>
    <li><a href="struts2-jfreechart-plugin/index.html" title="Struts 2 JFreeChart Plugin"><span class="none"></span>Struts 2 JFreeChart Plugin</a></li>
    <li><a href="struts2-json-plugin/index.html" title="Struts 2 JSON Plugin"><span class="none"></span>Struts 2 JSON Plugin</a></li>
    <li><a href="struts2-junit-plugin/index.html" title="Struts 2 JUnit Plugin"><span class="none"></span>Struts 2 JUnit Plugin</a></li>
    <li><a href="struts2-osgi-plugin/index.html" title="Struts 2 OSGi Plugin"><span class="none"></span>Struts 2 OSGi Plugin</a></li>
    <li><a href="struts2-oval-plugin/index.html" title="Struts 2 OVal Plugin"><span class="none"></span>Struts 2 OVal Plugin</a></li>
    <li><a href="struts2-pell-multipart-plugin/index.html" title="Struts 2 Pell Multipart Plugin"><span class="none"></span>Struts 2 Pell Multipart Plugin</a></li>
    <li><a href="struts2-plexus-plugin/index.html" title="Struts 2 Plexus Plugin"><span class="none"></span>Struts 2 Plexus Plugin</a></li>
    <li><a href="struts2-portlet-plugin/index.html" title="Struts 2 Portlet Plugin"><span class="none"></span>Struts 2 Portlet Plugin</a></li>
    <li><a href="struts2-portlet-mocks-plugin/index.html" title="Struts 2 Portlet Mocks Plugin"><span class="none"></span>Struts 2 Portlet Mocks Plugin</a></li>
    <li><a href="struts2-portlet-tiles-plugin/index.html" title="Struts 2 Portlet Tiles Plugin"><span class="none"></span>Struts 2 Portlet Tiles Plugin</a></li>
    <li><a href="struts2-rest-plugin/index.html" title="Struts 2 REST Plugin"><span class="none"></span>Struts 2 REST Plugin</a></li>
    <li><a href="struts2-sitemesh-plugin/index.html" title="Struts 2 Sitemesh Plugin"><span class="none"></span>Struts 2 Sitemesh Plugin</a></li>
    <li><a href="struts2-spring-plugin/index.html" title="Struts 2 Spring Plugin"><span class="none"></span>Struts 2 Spring Plugin</a></li>
    <li><a href="struts2-testng-plugin/index.html" title="Struts 2 TestNG Plugin"><span class="none"></span>Struts 2 TestNG Plugin</a></li>
    <li><a href="struts2-tiles-plugin/index.html" title="Struts 2 Tiles Plugin"><span class="none"></span>Struts 2 Tiles Plugin</a></li>
    <li><a href="struts2-velocity-plugin/index.html" title="Struts 2 Velocity Plugin"><span class="none"></span>Struts 2 Velocity Plugin</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="Overview"></a>Overview</h2>
<p>This report summarizes newer versions that may be available for your project's various properties associated with artifacts.</p>
<table border="0" class="table table-striped">
<tr class="a">
<td><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td># of properties using the latest version available</td>
<td>0</td></tr>
<tr class="b">
<td><figure><img src="images/icon_warning_sml.gif" alt="" /></figure></td>
<td># of properties where the next version available is smaller than an incremental version update</td>
<td>0</td></tr>
<tr class="a">
<td><figure><img src="images/icon_warning_sml.gif" alt="" /></figure></td>
<td># of properties where the next version available is an incremental version update</td>
<td>0</td></tr>
<tr class="b">
<td><figure><img src="images/icon_warning_sml.gif" alt="" /></figure></td>
<td># of properties where the next version available is a minor version update</td>
<td>0</td></tr>
<tr class="a">
<td><figure><img src="images/icon_warning_sml.gif" alt="" /></figure></td>
<td># of properties where the next version available is a major version update</td>
<td>0</td></tr></table><section>
<h3><a name="Summary_of_properties_associated_with_artifact_versions"></a>Summary of properties associated with artifact versions</h3>
<p>No properties associated with artifacts have been defined.</p></section></section><section>
<h2><a name="Properties_associated_with_artifact_versions"></a>Properties associated with artifact versions</h2>
<p></p></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>
