<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-04-18 
 | 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="20200418" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling OSGi Feature Maven Plugin &#x2013; slingfeature:launch-features</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-04-18<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.2.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 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:launch-features"></a>slingfeature:launch-features</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:slingfeature-maven-plugin:1.2.0:launch-features</p>
      
<p><b>Description</b>:</p>
      
<div>Launches the given Feature File</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</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="#artifactClashOverrides">&lt;artifactClashOverrides&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>The Artifact Id Overrides (see Feature Launcher for more info)<br /><b>User property is</b>: <tt>artifactClashOverrides</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#cacheDirectory">&lt;cacheDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The path of the folder where the cache is located<br /><b>User property is</b>: <tt>cacheDirectory</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#extensionConfigurations">&lt;extensionConfigurations&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Extension Configurations for the Launcher<br /><b>User property is</b>: <tt>extensionConfigurations</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="#frameworkArtifacts">&lt;frameworkArtifacts&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Framework Artifacts for the Launcher<br /><b>User property is</b>: <tt>frameworkArtifacts</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#frameworkProperties">&lt;frameworkProperties&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Framework Properties for the Launcher<br /><b>User property is</b>: <tt>frameworkProperties</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#frameworkVersion">&lt;frameworkVersion&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The Framework Version (see Feature Launcher for more info)<br /><b>User property is</b>: <tt>frameworkVersion</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<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="a">
            
<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="b">
            
<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="a">
            
<td><tt><a href="#homeDirectory">&lt;homeDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The path of the folder where the launcher home is located<br /><b>User property is</b>: <tt>homeDirectory</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<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="a">
            
<td><tt><a href="#repositoryUrl">&lt;repositoryUrl&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The Url for the Repository (see Feature Launcher for more info)<br /><b>User property is</b>: <tt>frameworkRepositoryUrl</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#selection">&lt;selection&gt;</a></tt></td>
            
<td><tt>FeatureSelectionConfig</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /></td>
          </tr>
          
<tr class="a">
            
<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="b">
            
<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="a">
            
<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="b">
            
<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="a">
            
<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="b">
            
<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="a">
            
<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>
          
<tr class="b">
            
<td><tt><a href="#variableValues">&lt;variableValues&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Variable Values for the Launcher<br /><b>User property is</b>: <tt>variableValues</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#verbose">&lt;verbose&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Framework Properties for the Launcher<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>verbose</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.3CartifactClashOverrides.3E"></a><b><a name="artifactClashOverrides">&lt;artifactClashOverrides&gt;</a></b></h4>
        
<div>The Artifact Id Overrides (see Feature Launcher for more info)</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>artifactClashOverrides</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CcacheDirectory.3E"></a><b><a name="cacheDirectory">&lt;cacheDirectory&gt;</a></b></h4>
        
<div>The path of the folder where the cache is located</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cacheDirectory</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CextensionConfigurations.3E"></a><b><a name="extensionConfigurations">&lt;extensionConfigurations&gt;</a></b></h4>
        
<div>Extension Configurations for the Launcher</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>extensionConfigurations</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.3CframeworkArtifacts.3E"></a><b><a name="frameworkArtifacts">&lt;frameworkArtifacts&gt;</a></b></h4>
        
<div>Framework Artifacts for the Launcher</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>frameworkArtifacts</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CframeworkProperties.3E"></a><b><a name="frameworkProperties">&lt;frameworkProperties&gt;</a></b></h4>
        
<div>Framework Properties for the Launcher</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>frameworkProperties</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CframeworkVersion.3E"></a><b><a name="frameworkVersion">&lt;frameworkVersion&gt;</a></b></h4>
        
<div>The Framework Version (see Feature Launcher for more info)</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>frameworkVersion</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.3ChomeDirectory.3E"></a><b><a name="homeDirectory">&lt;homeDirectory&gt;</a></b></h4>
        
<div>The path of the folder where the launcher home is located</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>homeDirectory</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.3CrepositoryUrl.3E"></a><b><a name="repositoryUrl">&lt;repositoryUrl&gt;</a></b></h4>
        
<div>The Url for the Repository (see Feature Launcher for more info)</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>frameworkRepositoryUrl</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cselection.3E"></a><b><a name="selection">&lt;selection&gt;</a></b></h4>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.sling.feature.maven.mojos.FeatureSelectionConfig</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><hr /></div>
<div class="section">
<h4><a name="a.3CvariableValues.3E"></a><b><a name="variableValues">&lt;variableValues&gt;</a></b></h4>
        
<div>Variable Values for the Launcher</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>variableValues</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cverbose.3E"></a><b><a name="verbose">&lt;verbose&gt;</a></b></h4>
        
<div>Framework Properties for the Launcher</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>verbose</tt></li>
          
<li><b>Default</b>: <tt>false</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>
