<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-03-23 
 | 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="20200323" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling OSGi Feature Maven Plugin &#x2013; slingfeature:include-artifact</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 OSGi Feature 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-03-23<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.1.20</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="slingfeature:include-artifact"></a>slingfeature:include-artifact</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:slingfeature-maven-plugin:1.1.20:include-artifact</p>
      
<p><b>Description</b>:</p>
      
<div>This goal creates a Feature Model file that includes the Module
Artifact as bundle (or extension) so that the Artifact can be added
through a FM into a FM project. The FM file can be found in the
'build directory'/slingfeature-tmp folder. After a FM file is
created successfully this file will be installed in the local Maven
Repository as 'slingosgifeature' file under the Module's Maven Id
location (group, artifact, version). This file can then later be
used inside the 'aggregate-features' goal with:
<tt>&lt;includeArtifact&gt;
&lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
&lt;artifactId&gt;org.apache.sling.test.feature&lt;/artifactId&gt;
&lt;version&gt;1.0.0&lt;/version&gt;
&lt;classifier&gt;my-test-classifier&lt;/classifier&gt;
&lt;type&gt;slingosgifeature&lt;/type&gt;
&lt;/includeArtifact&gt;</tt> It also can add dependencies to the
FM file if its scope is provided (normally that would be
'compile'). In addition a bundle start order can be set for these
included dependency bundles. Finally any FM files inside the Source
FM folder are embedded into the FM file. This allows to add
extension files like 'repoinit' etc to be added to provide them
with the module.</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>compile</tt>.</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>prepare-package</tt>.</li>
      </ul>
      
<div class="section">
<h3><a name="Required_Parameters"></a>Required 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="#features">&lt;features&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>Directory containing feature files<br /><b>Default value is</b>: <tt>src/main/features</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#testFeatures">&lt;testFeatures&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>Directory containing test feature files.<br /><b>Default value is</b>: <tt>src/test/features</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<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="#bundlesStartOrder">&lt;bundlesStartOrder&gt;</a></tt></td>
            
<td><tt>int</tt></td>
            
<td><tt>-</tt></td>
            
<td>Start Order of all included Dependencies.<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>bundleStartOrder</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#featuresExcludes">&lt;featuresExcludes&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of excludes for the feature files. Feature
files excluded by this configuration are not processed at all.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#featuresIncludes">&lt;featuresIncludes&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of includes for the feature files in the
configured directory. Only feature files specified by this include
are processed.<br /><b>Default value is</b>: <tt>**/*.json</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#generatedFeatures">&lt;generatedFeatures&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>Directory containing generated feature files<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#generatedFeaturesExcludes">&lt;generatedFeaturesExcludes&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of excludes for the generated feature files.
Feature files excluded by this configuration are not processed at
all.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#generatedFeaturesIncludes">&lt;generatedFeaturesIncludes&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of includes for the generated feature files in
the configured directory. Only feature files specified by this
include are processed.<br /><b>Default value is</b>: <tt>**/*.json</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#includeArtifactClassifier">&lt;includeArtifactClassifier&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Classifier of the feature the current artifact is included in. For
simple projects a artifact classifier is not needed but in multi
feature projects the classifier is used to find the appropriate
feature.<br /><b>User property is</b>: <tt>includeArtifactClassifier</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#includeArtifactExtension">&lt;includeArtifactExtension&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Name of the extension to include the artifact in. If not specified
the artifact is included as a bundle.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#includeDependenciesWithScope">&lt;includeDependenciesWithScope&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>All listed dependency's scopes will be added to the descriptor.<br /><b>User property is</b>: <tt>includeDependenciesWithScope</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#jarStartOrder">&lt;jarStartOrder&gt;</a></tt></td>
            
<td><tt>int</tt></td>
            
<td><tt>-</tt></td>
            
<td>The start level for the attached jar/bundle.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#skipAddFeatureDependencies">&lt;skipAddFeatureDependencies&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> the artifacts from the feature are not
as dependencies to the project.<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#skipAddJarToFeature">&lt;skipAddJarToFeature&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> the main jar artifact is not added to
the feature.<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#skipAddJarToTestFeature">&lt;skipAddJarToTestFeature&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> the main jar artifact is not added to
the test feature.<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#skipAddTestFeatureDependencies">&lt;skipAddTestFeatureDependencies&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> the artifacts from the test feature are
not as dependencies to the project.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#testFeaturesExcludes">&lt;testFeaturesExcludes&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of excludes for the test features.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#testFeaturesIncludes">&lt;testFeaturesIncludes&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of includes for the test features.<br /><b>Default value is</b>: <tt>**/*.json</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#validateFeatures">&lt;validateFeatures&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> the features are validated against the
JSON schema.<br /><b>Default value is</b>: <tt>true</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.3CbundlesStartOrder.3E"></a><b><a name="bundlesStartOrder">&lt;bundlesStartOrder&gt;</a></b></h4>
        
<div>Start Order of all included Dependencies.</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>bundleStartOrder</tt></li>
          
<li><b>Default</b>: <tt>-1</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cfeatures.3E"></a><b><a name="features">&lt;features&gt;</a></b></h4>
        
<div>Directory containing feature files</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>Default</b>: <tt>src/main/features</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CfeaturesExcludes.3E"></a><b><a name="featuresExcludes">&lt;featuresExcludes&gt;</a></b></h4>
        
<div>Comma separated list of excludes for the feature files. Feature
files excluded by this configuration are not processed at all.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CfeaturesIncludes.3E"></a><b><a name="featuresIncludes">&lt;featuresIncludes&gt;</a></b></h4>
        
<div>Comma separated list of includes for the feature files in the
configured directory. Only feature files specified by this include
are processed.</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>**/*.json</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CgeneratedFeatures.3E"></a><b><a name="generatedFeatures">&lt;generatedFeatures&gt;</a></b></h4>
        
<div>Directory containing generated feature files</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CgeneratedFeaturesExcludes.3E"></a><b><a name="generatedFeaturesExcludes">&lt;generatedFeaturesExcludes&gt;</a></b></h4>
        
<div>Comma separated list of excludes for the generated feature files.
Feature files excluded by this configuration are not processed at
all.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CgeneratedFeaturesIncludes.3E"></a><b><a name="generatedFeaturesIncludes">&lt;generatedFeaturesIncludes&gt;</a></b></h4>
        
<div>Comma separated list of includes for the generated feature files in
the configured directory. Only feature files specified by this
include are processed.</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>**/*.json</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CincludeArtifactClassifier.3E"></a><b><a name="includeArtifactClassifier">&lt;includeArtifactClassifier&gt;</a></b></h4>
        
<div>Classifier of the feature the current artifact is included in. For
simple projects a artifact classifier is not needed but in multi
feature projects the classifier is used to find the appropriate
feature.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>includeArtifactClassifier</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CincludeArtifactExtension.3E"></a><b><a name="includeArtifactExtension">&lt;includeArtifactExtension&gt;</a></b></h4>
        
<div>Name of the extension to include the artifact in. If not specified
the artifact is included as a bundle.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CincludeDependenciesWithScope.3E"></a><b><a name="includeDependenciesWithScope">&lt;includeDependenciesWithScope&gt;</a></b></h4>
        
<div>All listed dependency's scopes will be added to the descriptor.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>includeDependenciesWithScope</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CjarStartOrder.3E"></a><b><a name="jarStartOrder">&lt;jarStartOrder&gt;</a></b></h4>
        
<div>The start level for the attached jar/bundle.</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CskipAddFeatureDependencies.3E"></a><b><a name="skipAddFeatureDependencies">&lt;skipAddFeatureDependencies&gt;</a></b></h4>
        
<div>If set to <tt>true</tt> the artifacts from the feature are not
as dependencies to the project.</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 /></div>
<div class="section">
<h4><a name="a.3CskipAddJarToFeature.3E"></a><b><a name="skipAddJarToFeature">&lt;skipAddJarToFeature&gt;</a></b></h4>
        
<div>If set to <tt>true</tt> the main jar artifact is not added to
the feature.</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 /></div>
<div class="section">
<h4><a name="a.3CskipAddJarToTestFeature.3E"></a><b><a name="skipAddJarToTestFeature">&lt;skipAddJarToTestFeature&gt;</a></b></h4>
        
<div>If set to <tt>true</tt> the main jar artifact is not added to
the test feature.</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 /></div>
<div class="section">
<h4><a name="a.3CskipAddTestFeatureDependencies.3E"></a><b><a name="skipAddTestFeatureDependencies">&lt;skipAddTestFeatureDependencies&gt;</a></b></h4>
        
<div>If set to <tt>true</tt> the artifacts from the test feature are
not as dependencies to the project.</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 /></div>
<div class="section">
<h4><a name="a.3CtestFeatures.3E"></a><b><a name="testFeatures">&lt;testFeatures&gt;</a></b></h4>
        
<div>Directory containing test feature files.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>Default</b>: <tt>src/test/features</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CtestFeaturesExcludes.3E"></a><b><a name="testFeaturesExcludes">&lt;testFeaturesExcludes&gt;</a></b></h4>
        
<div>Comma separated list of excludes for the test features.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CtestFeaturesIncludes.3E"></a><b><a name="testFeaturesIncludes">&lt;testFeaturesIncludes&gt;</a></b></h4>
        
<div>Comma separated list of includes for the test features.</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>**/*.json</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CvalidateFeatures.3E"></a><b><a name="validateFeatures">&lt;validateFeatures&gt;</a></b></h4>
        
<div>If set to <tt>true</tt> the features are validated against the
JSON schema.</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>
      </div></div>
    </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>
