<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-06-22 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<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="20200622" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling JSPC Maven Plugin &#x2013; JIRA Report</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.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.6.min.js"></script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><div id="bannerLeft"><h2>Apache Sling JSPC Maven Plugin</h2>
</div>
</div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2020-06-22<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.2.0</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">Overview</li>
    <li><a href="index.html" title="Introduction"><span class="none"></span>Introduction</a>  </li>
    <li><a href="plugin-info.html" title="Goals"><span class="none"></span>Goals</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="apidocs/index.html" title="Javadoc"><span class="none"></span>Javadoc</a>  </li>
    <li><a href="surefire-report.html" title="Surefire Report"><span class="none"></span>Surefire Report</a>  </li>
    <li class="active"><a href="#"><span class="none"></span>JIRA Report</a>
  </li>
    <li><a href="plugin-info.html" title="Plugin Documentation"><span class="none"></span>Plugin Documentation</a>  </li>
      </ul>
  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <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>
        </div>
        <div id="bodyColumn"  class="span10" >
<div class="section">
<h2><a name="JIRA_Report"></a>JIRA Report</h2>
<table border="0" class="table table-striped">
<tr class="a">
<th>Type</th>
<th>Key</th>
<th>Summary</th>
<th>Fix Version</th></tr>
<tr class="b">
<td>New Feature</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-9207">SLING-9207</a></td>
<td>Unify the support for bundled scripts</td>
<td>HTL Maven Plugin 2.0.0-1.4.0, Scripting JSP 2.5.0, Scripting HTL Engine 1.4.0-1.4.0, Commons Compiler 2.4.0, Scripting HTL Java Compiler 1.2.0-1.4.0, JSPC Maven Plugin 2.2.0, Scripting Bundle Maven Plugin 0.2.0, Servlets Resolver 2.7.0, Scripting Core 2.3.0, Scripting HTL JS Use Provider 1.2.0</td></tr>
<tr class="a">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-9453">SLING-9453</a></td>
<td>Compile jsp in parallel</td>
<td>JSPC Maven Plugin 2.2.0</td></tr>
<tr class="b">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-9217">SLING-9217</a></td>
<td>The JSPC Maven plugin should allow configuring the package name under which JSPs are compiled</td>
<td>JSPC Maven Plugin 2.2.0</td></tr>
<tr class="a">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-9154">SLING-9154</a></td>
<td>Update to the latest JSP compiler</td>
<td>JSPC Maven Plugin 2.2.0</td></tr>
<tr class="b">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-6982">SLING-6982</a></td>
<td>JSPC plugin should support additional resource roots</td>
<td>JSPC Maven Plugin 2.2.0</td></tr>
<tr class="a">
<td>Bug</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-6940">SLING-6940</a></td>
<td>JSPC plugin violates Maven naming convention</td>
<td>Maven JSPC Plugin 2.1.0</td></tr>
<tr class="b">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-6925">SLING-6925</a></td>
<td>Make JSPC plugin useful to validation and analysis</td>
<td>Maven JSPC Plugin 2.1.0</td></tr>
<tr class="a">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-6923">SLING-6923</a></td>
<td>Update JSPC plugin to support java 1.8</td>
<td>Maven JSPC Plugin 2.1.0</td></tr>
<tr class="b">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-5107">SLING-5107</a></td>
<td>Switch to Java annotations for Maven plugins</td>
<td>Maven Sling Plugin 2.1.2, Maven JSPC Plugin 2.1.0, Maven JCROCM Plugin 2.0.6, Maven Launchpad Plugin 2.3.4</td></tr>
<tr class="a">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-2730">SLING-2730</a></td>
<td>Allow JSPs to be excluded from compilation in maven-jspc-plugin</td>
<td>Maven JSPC Plugin 2.0.8</td></tr>
<tr class="b">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-2350">SLING-2350</a></td>
<td>Sling Maven JSPC Plugin depends on legacy Sling API lib which does not support adaptable SlingHttpServletRequest objects</td>
<td>Maven JSPC Plugin 2.0.6</td></tr>
<tr class="a">
<td>Improvement</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-811">SLING-811</a></td>
<td>Reduce Dependency Management form parent pom</td>
<td> Servlets Resolver 2.0.6, Servlets Post 2.0.4, Servlets Get 2.0.4, Scripting JSP-Taglib 2.0.4, Scripting JSP 2.0.6,  Scripting JavaScript 2.0.4, Scripting Java 1.0.0, Scripting Core 2.0.4, Maven Sling Plugin 2.0.4,  Maven JSPC Plugin 2.0.4, Launchpad Webapp 5, Launchpad Base 2.0.4, Launchpad App 5, JCR Webdav 2.0.6, JCR Resource 2.0.4, JCR OCM 2.0.4, JCR Jackrabbit Server 2.0.4, JCR Installer 3.0.0, JCR Contentloader 2.0.4,  JCR Classloader 2.0.4, JCR Base 2.0.4, I18n 2.0.2, Extensions Thread Dumper 0.1.2, Settings 1.0.0, Event 2.0.4, Bundle Resource 2.0.4, Engine 2.0.4, Commons Threads 2.0.4,  Commons Testing 2.0.4, Commons Scheduler 2.0.4, Commons OSGi 2.0.4,  Commons Mime 2.0.4, Commons Log 2.0.4, Commons JSON 2.0.4, API 2.0.4</td></tr>
<tr class="b">
<td>Bug</td>
<td><a class="externalLink" href="https://issues.apache.org/jira/browse/SLING-593">SLING-593</a></td>
<td>JSPC does not respect JSTL/EL expressions</td>
<td> Maven JSPC Plugin 2.0.4</td></tr></table></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2007&#x2013;2020
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
