<!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:package</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:package"></a>slingstart:package</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:slingstart-maven-plugin:1.8.2:package</p>
      
<p><b>Description</b>:</p>
      
<div>Create a Sling quickstart package (either JAR or WAR) based on the
referenced model.</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>pre-integration-test</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="#attachArtifact">attachArtifact</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>false</tt> does not attach the generated artifact
to Maven. This setting takes only effect if the packaging of the
current Maven project is not <tt>slingstart</tt>. Otherwise the
generated artifact is always the main artifact (and is therefore
always attached).<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#createWebapp">createWebapp</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> creates a WAR artifact in addition to
the standalone JAR from the model.<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="#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="a">
            
<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="b">
            
<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="a">
            
<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="b">
            
<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="attachArtifact">attachArtifact</a>:</b></p>
        
<div>If set to <tt>false</tt> does not attach the generated artifact
to Maven. This setting takes only effect if the packaging of the
current Maven project is not <tt>slingstart</tt>. Otherwise the
generated artifact is always the main artifact (and is therefore
always attached).</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr />
<p><b><a name="createWebapp">createWebapp</a>:</b></p>
        
<div>If set to <tt>true</tt> creates a WAR artifact in addition to
the standalone JAR from the model.</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="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>
