<!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:attach-modelarchive</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:attach-modelarchive"></a>slingstart:attach-modelarchive</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:slingstart-maven-plugin:1.8.2:attach-modelarchive</p>
      
<p><b>Description</b>:</p>
      
<div>Attach the model archive as a project artifact.</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>package</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="#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="#modelArchiveName">modelArchiveName</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The filename to be used for the generated model archive file.<br /><b>Default value is</b>: <tt>${project.build.finalName}</tt>.<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="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="modelArchiveName">modelArchiveName</a>:</b></p>
        
<div>The filename to be used for the generated model archive file.</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>${project.build.finalName}</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>
