<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.1 at 2018-09-13 
 | 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="20180913" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling SlingStart Maven Plugin &#x2013; slingstart:generate-resources</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 SlingStart 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: 2018-09-13<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.2</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-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="slingstart:generate-resources"></a>slingstart:generate-resources</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:slingstart-maven-plugin:1.8.2:generate-resources</p>
      
<p><b>Description</b>:</p>
      
<div>(no description)</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
        
<li>Requires dependency resolution of artifacts in scope: <tt>test</tt>.</li>
        
<li>The goal is thread-safe and supports parallel builds.</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>generate-resources</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><b><a href="#allowUnresolvedPomDependencies">allowUnresolvedPomDependencies</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to true, an exception is throws when &quot;usePomDependencies&quot; is
set to true and some dependency version could not be resolved in
the Maven POM.<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#disableExtendingMavenClasspath">disableExtendingMavenClasspath</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> the Maven classpath (either scope
&quot;provided&quot; or &quot;test&quot;) will not be extended by the artifacts being
referenced in the model. 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p><br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#featuresDirectory">featuresDirectory</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /><b>Default value is</b>: <tt>${basedir}/src/main/features</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#model">model</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>1.3</tt></td>
            
<td>Inlined model. Is processed first and afterwards merged with any
model found in <tt>modelDirectory</tt>. 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p><br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#modelDirectory">modelDirectory</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The model directory containing the provision models. This parameter
is evaluated in the <tt>DependencyLifecycleParticipant</tt>. As
default first <tt>${basedir}/src/main/provisioning</tt> and
then <tt>${basedir}/src/test/provisioning</tt> is used (in case
the former does not exist). 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p><br /><b>Default value is</b>: <tt>${basedir}/src/main/provisioning</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#modelPattern">modelPattern</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The model file name pattern to consider. 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p><br /><b>Default value is</b>: <tt>((.*)\.txt|(.*)\.model)</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#usePomDependencies">usePomDependencies</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt>, Artifact dependencies from
provisioning file without explicit version are tried to be resolved
against the versions given in the Maven POM. The following sections
in the effective pom are considered during resolving the version: 

<ol style="list-style-type: decimal">

<li>The project's artifact itself</li>

<li>The project's dependencies</li>

<li>The project's dependencyManagement</li>
</ol><br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#usePomVariables">usePomVariables</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt>, properties from the Maven POM can be
used as variables in the provisioning files. The resolved variables
are added to the generated provisioning file, so other tools using
this model do not have to resolve them themselves.<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="allowUnresolvedPomDependencies">allowUnresolvedPomDependencies</a>:</b></p>
        
<div>If set to true, an exception is throws when &quot;usePomDependencies&quot; is
set to true and some dependency version could not be resolved in
the Maven POM.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="disableExtendingMavenClasspath">disableExtendingMavenClasspath</a>:</b></p>
        
<div>If set to <tt>true</tt> the Maven classpath (either scope
&quot;provided&quot; or &quot;test&quot;) will not be extended by the artifacts being
referenced in the model. 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="featuresDirectory">featuresDirectory</a>:</b></p>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>${basedir}/src/main/features</tt></li>
        </ul><hr />
<p><b><a name="model">model</a>:</b></p>
        
<div>Inlined model. Is processed first and afterwards merged with any
model found in <tt>modelDirectory</tt>. 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>1.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="modelDirectory">modelDirectory</a>:</b></p>
        
<div>The model directory containing the provision models. This parameter
is evaluated in the <tt>DependencyLifecycleParticipant</tt>. As
default first <tt>${basedir}/src/main/provisioning</tt> and
then <tt>${basedir}/src/test/provisioning</tt> is used (in case
the former does not exist). 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>${basedir}/src/main/provisioning</tt></li>
        </ul><hr />
<p><b><a name="modelPattern">modelPattern</a>:</b></p>
        
<div>The model file name pattern to consider. 

<p>This parameter is evaluated in the
<tt>ModelPreprocessor</tt>, i.e. outside of the Mojo execution
therefore it must not be configured within an <a class="externalLink" href="https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag">execution
tag</a> but rather in the global configuration section for this
plugin.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>((.*)\.txt|(.*)\.model)</tt></li>
        </ul><hr />
<p><b><a name="usePomDependencies">usePomDependencies</a>:</b></p>
        
<div>If set to <tt>true</tt>, Artifact dependencies from
provisioning file without explicit version are tried to be resolved
against the versions given in the Maven POM. The following sections
in the effective pom are considered during resolving the version: 

<ol style="list-style-type: decimal">

<li>The project's artifact itself</li>

<li>The project's dependencies</li>

<li>The project's dependencyManagement</li>
</ol></div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="usePomVariables">usePomVariables</a>:</b></p>
        
<div>If set to <tt>true</tt>, properties from the Maven POM can be
used as variables in the provisioning files. The resolved variables
are added to the generated provisioning file, so other tools using
this model do not have to resolve them themselves.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul>
      </div>
    </div>
  

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