<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2019-12-16 
 | 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="20191216" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling HTL Maven Plugin &#x2013; htl:validate</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 HTL 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: 2019-12-16<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.3.4-1.4.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><a href="usage.html" title="Usage"><span class="none"></span>Usage</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-right"></span>Project Reports</a>  </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="htl:validate"></a>htl:validate</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:htl-maven-plugin:1.3.4-1.4.0:validate</p>
      
<p><b>Description</b>:</p>
      
<div>Validates HTL scripts.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
        
<li>Binds by default to the <a class="externalLink" href="http://maven.apache.org/ref/current/maven-core/lifecycles.html">lifecycle phase</a>: <tt>compile</tt>.</li>
      </ul>
      
<div class="section">
<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
        
<table class="table table-striped" border="0">
          
<tr class="a">
            
<th>Name</th>
            
<th>Type</th>
            
<th>Since</th>
            
<th>Description</th>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#allowedExpressionOptions">&lt;allowedExpressionOptions&gt;</a></tt></td>
            
<td><tt>Set</tt></td>
            
<td><tt>1.3.0</tt></td>
            
<td>Adds the provided options to the list of known expression options,
so that the compiler doesn't log any warnings about them.<br /><b>User property is</b>: <tt>htl.allowedExpressionOptions</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#excludes">&lt;excludes&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>1.0.0</tt></td>
            
<td>List of files to exclude. Specified as fileset patterns which are
relative to the input directory whose contents will be scanned (see
the sourceDirectory configuration option).<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#failOnWarnings">&lt;failOnWarnings&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>1.0.0</tt></td>
            
<td>If set to &quot;true&quot; it will fail the build on compiler warnings.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>htl.failOnWarnings</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#generateJavaClasses">&lt;generateJavaClasses&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>1.1.0</tt></td>
            
<td>If set to &quot;true&quot; it will generate the Java classes resulted from
transpiling the HTL scripts to Java. The generated classes will be
stored in the folder identified by the
<tt>generatedJavaClassesDirectory</tt> parameter.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>htl.generateJavaClasses</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#generatedJavaClassesDirectory">&lt;generatedJavaClassesDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>1.1.0</tt></td>
            
<td>Defines the folder where the generated Java classes resulted from
transpiling the project's HTL scripts will be stored. This folder
will be added to the list of source folders for this project.<br /><b>Default value is</b>: <tt>${project.build.directory}/generated-sources/htl</tt>.<br /><b>User property is</b>: <tt>htl.generatedJavaClassesDirectory</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#generatedJavaClassesPrefix">&lt;generatedJavaClassesPrefix&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>1.2.0-1.4.0</tt></td>
            
<td>Defines the package prefix under which the HTL compilers will
generate the Java classes. By default the plugin doesn't provide
any prefix.<br /><b>User property is</b>: <tt>htl.generatedJavaClassesPrefix</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#ignoreImports">&lt;ignoreImports&gt;</a></tt></td>
            
<td><tt>Set</tt></td>
            
<td><tt>1.1.0</tt></td>
            
<td>Defines a list of Java packages that should be ignored when
generating the import statements for the Java classes resulted from
transpiling the project's HTL scripts. Subpackages of these
packages will also be part automatically of the ignore list.<br /><b>User property is</b>: <tt>htl.ignoreImports</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#includes">&lt;includes&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>1.0.0</tt></td>
            
<td>List of files to include. Specified as fileset patterns which are
relative to the input directory whose contents will be scanned (see
the sourceDirectory configuration option).<br /><b>Default value is</b>: <tt>**/*.html</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#skip">&lt;skip&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>1.0.2</tt></td>
            
<td>If set to &quot;true&quot; the validation will be skipped.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>htl.skip</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#sourceDirectory">&lt;sourceDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>1.0.0</tt></td>
            
<td>Defines the root folder where this Mojo expects to find Sightly
scripts to validate.<br /><b>Default value is</b>: <tt>${project.build.sourceDirectory}</tt>.<br /><b>User property is</b>: <tt>htl.sourceDirectory</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<div class="section">
<h4><a name="a.3CallowedExpressionOptions.3E"></a><b><a name="allowedExpressionOptions">&lt;allowedExpressionOptions&gt;</a></b></h4>
        
<div>Adds the provided options to the list of known expression options,
so that the compiler doesn't log any warnings about them.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Set</tt></li>
          
<li><b>Since</b>: <tt>1.3.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.allowedExpressionOptions</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cexcludes.3E"></a><b><a name="excludes">&lt;excludes&gt;</a></b></h4>
        
<div>List of files to exclude. Specified as fileset patterns which are
relative to the input directory whose contents will be scanned (see
the sourceDirectory configuration option).</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Since</b>: <tt>1.0.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CfailOnWarnings.3E"></a><b><a name="failOnWarnings">&lt;failOnWarnings&gt;</a></b></h4>
        
<div>If set to &quot;true&quot; it will fail the build on compiler warnings.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>1.0.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.failOnWarnings</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CgenerateJavaClasses.3E"></a><b><a name="generateJavaClasses">&lt;generateJavaClasses&gt;</a></b></h4>
        
<div>If set to &quot;true&quot; it will generate the Java classes resulted from
transpiling the HTL scripts to Java. The generated classes will be
stored in the folder identified by the
<tt>generatedJavaClassesDirectory</tt> parameter.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>1.1.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.generateJavaClasses</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CgeneratedJavaClassesDirectory.3E"></a><b><a name="generatedJavaClassesDirectory">&lt;generatedJavaClassesDirectory&gt;</a></b></h4>
        
<div>Defines the folder where the generated Java classes resulted from
transpiling the project's HTL scripts will be stored. This folder
will be added to the list of source folders for this project.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>1.1.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.generatedJavaClassesDirectory</tt></li>
          
<li><b>Default</b>: <tt>${project.build.directory}/generated-sources/htl</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CgeneratedJavaClassesPrefix.3E"></a><b><a name="generatedJavaClassesPrefix">&lt;generatedJavaClassesPrefix&gt;</a></b></h4>
        
<div>Defines the package prefix under which the HTL compilers will
generate the Java classes. By default the plugin doesn't provide
any prefix.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>1.2.0-1.4.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.generatedJavaClassesPrefix</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CignoreImports.3E"></a><b><a name="ignoreImports">&lt;ignoreImports&gt;</a></b></h4>
        
<div>Defines a list of Java packages that should be ignored when
generating the import statements for the Java classes resulted from
transpiling the project's HTL scripts. Subpackages of these
packages will also be part automatically of the ignore list.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Set</tt></li>
          
<li><b>Since</b>: <tt>1.1.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.ignoreImports</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cincludes.3E"></a><b><a name="includes">&lt;includes&gt;</a></b></h4>
        
<div>List of files to include. Specified as fileset patterns which are
relative to the input directory whose contents will be scanned (see
the sourceDirectory configuration option).</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Since</b>: <tt>1.0.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>**/*.html</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cskip.3E"></a><b><a name="skip">&lt;skip&gt;</a></b></h4>
        
<div>If set to &quot;true&quot; the validation will be skipped.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>1.0.2</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.skip</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CsourceDirectory.3E"></a><b><a name="sourceDirectory">&lt;sourceDirectory&gt;</a></b></h4>
        
<div>Defines the root folder where this Mojo expects to find Sightly
scripts to validate.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>1.0.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>htl.sourceDirectory</tt></li>
          
<li><b>Default</b>: <tt>${project.build.sourceDirectory}</tt></li>
        </ul>
      </div></div>
    </div>
  

        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2007&#x2013;2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
