<!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:start</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:start"></a>slingstart:start</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:slingstart-maven-plugin:1.8.2:start</p>
      
<p><b>Description</b>:</p>
      
<div>Start one or multiple launchpad instance(s).</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</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="#cleanWorkingDirectory">cleanWorkingDirectory</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Clean the working directory before start.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>launchpad.clean.workdir</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#debug">debug</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Overwrites debug parameter of all server configurations (if set).
Attaches a debugger to the forked JVM. If set to
<tt>&quot;true&quot;</tt>, the process will allow a debugger to connect
on port 8000. If set to some other string, that string will be
appended to the server's <tt>vmOpts</tt>, allowing you to
configure arbitrary debugging options.<br /><b>User property is</b>: <tt>launchpad.debug</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#keepLaunchpadRunning">keepLaunchpadRunning</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td><b>Deprecated.</b> Use <tt>AbstractStartStopMojo.blockUntilKeyIsPressed</tt>
instead.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>launchpad.keep.running</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#launchpadDependency">launchpadDependency</a></b></td>
            
<td><tt>Dependency</tt></td>
            
<td><tt>-</tt></td>
            
<td>The launchpad jar as a dependency. This is only used if
&quot;launchpadJar&quot; is not specified.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#launchpadJar">launchpadJar</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The launchpad jar. This option has precedence over
&quot;launchpadDependency&quot;.<br /><b>User property is</b>: <tt>launchpad.jar</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#launchpadReadyTimeOutSec">launchpadReadyTimeOutSec</a></b></td>
            
<td><tt>int</tt></td>
            
<td><tt>-</tt></td>
            
<td>Ready timeout in seconds. If the launchpad has not been started in
this time, it's assumed that the startup failed.<br /><b>Default value is</b>: <tt>600</tt>.<br /><b>User property is</b>: <tt>launchpad.ready.timeout</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#parallelExecution">parallelExecution</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Set the execution of launchpad instances to be run in parallel
(threads)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>launchpad.parallelExecution</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#servers">servers</a></b></td>
            
<td><tt>List</tt></td>
            
<td><tt>-</tt></td>
            
<td>Parameter containing the list of server configurations<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#shouldBlockUntilKeyIsPressed">shouldBlockUntilKeyIsPressed</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If <tt>true</tt> this mojo blocks until you press the Enter
key.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#skipLaunchpad">skipLaunchpad</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Set this to &quot;true&quot; to skip starting the launchpad<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>maven.test.skip</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#systemPropertiesFile">systemPropertiesFile</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The system properties file will contain all started instances with
their ports etc.<br /><b>Default value is</b>: <tt>${project.build.directory}/launchpad-runner.properties</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="cleanWorkingDirectory">cleanWorkingDirectory</a>:</b></p>
        
<div>Clean the working directory before start.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>launchpad.clean.workdir</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="debug">debug</a>:</b></p>
        
<div>Overwrites debug parameter of all server configurations (if set).
Attaches a debugger to the forked JVM. If set to
<tt>&quot;true&quot;</tt>, the process will allow a debugger to connect
on port 8000. If set to some other string, that string will be
appended to the server's <tt>vmOpts</tt>, allowing you to
configure arbitrary debugging options.</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>launchpad.debug</tt></li>
        </ul><hr />
<p><b><a name="keepLaunchpadRunning">keepLaunchpadRunning</a>:</b></p>
        
<div><b>Deprecated.</b> Use <tt>AbstractStartStopMojo.blockUntilKeyIsPressed</tt>
instead.</div>
        
<div>Keep the launchpad running.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>launchpad.keep.running</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="launchpadDependency">launchpadDependency</a>:</b></p>
        
<div>The launchpad jar as a dependency. This is only used if
&quot;launchpadJar&quot; is not specified.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.maven.model.Dependency</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="launchpadJar">launchpadJar</a>:</b></p>
        
<div>The launchpad jar. This option has precedence over
&quot;launchpadDependency&quot;.</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>launchpad.jar</tt></li>
        </ul><hr />
<p><b><a name="launchpadReadyTimeOutSec">launchpadReadyTimeOutSec</a>:</b></p>
        
<div>Ready timeout in seconds. If the launchpad has not been started in
this time, it's assumed that the startup failed.</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>launchpad.ready.timeout</tt></li>
          
<li><b>Default</b>: <tt>600</tt></li>
        </ul><hr />
<p><b><a name="parallelExecution">parallelExecution</a>:</b></p>
        
<div>Set the execution of launchpad instances to be run in parallel
(threads)</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>launchpad.parallelExecution</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr />
<p><b><a name="servers">servers</a>:</b></p>
        
<div>Parameter containing the list of server configurations</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.List</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="shouldBlockUntilKeyIsPressed">shouldBlockUntilKeyIsPressed</a>:</b></p>
        
<div>If <tt>true</tt> this mojo blocks until you press the Enter
key.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="skipLaunchpad">skipLaunchpad</a>:</b></p>
        
<div>Set this to &quot;true&quot; to skip starting the launchpad</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>maven.test.skip</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="systemPropertiesFile">systemPropertiesFile</a>:</b></p>
        
<div>The system properties file will contain all started instances with
their ports etc.</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>${project.build.directory}/launchpad-runner.properties</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>
