<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2019-06-06 
 | 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="20190606" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling Maven Plugin &#x2013; sling:fsmount</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 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: 2019-06-06<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.4.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="sling:fsmount"></a>sling:fsmount</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.sling:sling-maven-plugin:2.4.2:fsmount</p>
      
<p><b>Description</b>:</p>
      
<div>Creates OSGi configurations for the <a class="externalLink" href="https://sling.apache.org/documentation/bundles/accessing-filesystem-resources-extensions-fsresource.html">Apache
Sling File System Resource Provider</a>.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
        
<li>Since version: <tt>2.2.0</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="#bundleFileName">&lt;bundleFileName&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>The name of the generated JAR file.<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.jar</tt>.<br /><b>User property is</b>: <tt>sling.file</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#failOnError">&lt;failOnError&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>Determines whether or not to fail the build if the HTTP POST or PUT
returns an non-OK response code.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>sling.failOnError</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#password">&lt;password&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>The password to authenticate at the running Sling instance.<br /><b>Default value is</b>: <tt>admin</tt>.<br /><b>User property is</b>: <tt>sling.password</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#skip">&lt;skip&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>If set to <tt>true</tt> Sling File System Resource
mount/unmount commands are ignored.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>sling.fsmount.skip</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#slingUrl">&lt;slingUrl&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>The URL of the running Sling instance. 

<p>The default is only useful for <b>WebConsole</b>
deployment.</p>

<p>For <b>WebDAV</b> deployment it is recommended to
include the Sling Simple WebDAV servlet root, for instance <a class="externalLink" href="http://localhost:8080/dav/default/libs/sling/install">http://localhost:8080/dav/default/libs/sling/install</a>.
Omitting the <tt>dav/default</tt> segment can lead to conflicts
with other servlets.</p><br /><b>Default value is</b>: <tt>http://localhost:8080/system/console</tt>.<br /><b>User property is</b>: <tt>sling.url</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#user">&lt;user&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>The user name to authenticate at the running Sling instance.<br /><b>Default value is</b>: <tt>admin</tt>.<br /><b>User property is</b>: <tt>sling.user</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="#deployFsResourceBundle">&lt;deployFsResourceBundle&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.3.0</tt></td>
            
<td>Deploy <tt>org.apache.sling.fsresource</tt> to Sling instance
bundle when it is not deployed already.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#deployFsResourceBundlePrerequisites">&lt;deployFsResourceBundlePrerequisites&gt;</a></tt></td>
            
<td><tt>List</tt></td>
            
<td><tt>2.3.0</tt></td>
            
<td>Bundles that have to be installed as prerequisites to execute this
goal. With multiple entries in the list different bundles with
different preconditions can be defined.<br />
<b>Default value is:</b>: 

<div>
<pre>
&lt;deployFsResourceBundlePrerequisites&gt;
  &lt;bundlePrerequisite&gt;
    &lt;bundles&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.commons.johnzon&lt;/artifactId&gt;
        &lt;version&gt;1.0.0&lt;/version&gt;
      &lt;/bundle&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
        &lt;artifactId&gt;commons-collections4&lt;/artifactId&gt;
        &lt;version&gt;4.1&lt;/version&gt;
        &lt;symbolicName&gt;org.apache.commons.collections4&lt;/symbolicName&gt;
      &lt;/bundle&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.fsresource&lt;/artifactId&gt;
        &lt;version&gt;2.1.16&lt;/version&gt;
      &lt;/bundle&gt;
    &lt;/bundles&gt;
    &lt;preconditions&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.resourceresolver&lt;/artifactId&gt;
        &lt;version&gt;1.5.18&lt;/version&gt;
      &lt;/bundle&gt;
    &lt;/preconditions&gt;
  &lt;/bundlePrerequisite&gt;
  &lt;bundlePrerequisite&gt;
    &lt;bundles&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.fsresource&lt;/artifactId&gt;
        &lt;version&gt;1.4.8&lt;/version&gt;
      &lt;/bundle&gt;
    &lt;/bundles&gt;
  &lt;/bundlePrerequisite&gt;
&lt;/deployFsResourceBundlePrerequisites&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#deploymentMethod">&lt;deploymentMethod&gt;</a></tt></td>
            
<td><tt>BundleDeploymentMethod</tt></td>
            
<td><tt>2.3.0</tt></td>
            
<td>Bundle deployment method. One of the following three values are
allowed 

<ol style="list-style-type: decimal">

<li><b>WebConsole</b>, uses the <a class="externalLink" href="http://felix.apache.org/documentation/subprojects/apache-felix-web-console/web-console-restful-api.html#post-requests">Felix
Web Console REST API</a> for deployment (HTTP POST). This is the
default. Make sure that <tt>slingUrl</tt> points to the Felix
Web Console in that case.</li>

<li><b>WebDAV</b>, uses <a class="externalLink" href="https://sling.apache.org/documentation/development/repository-based-development.html">WebDAV</a>
for deployment (HTTP PUT). Make sure that <tt>slingUrl</tt>
points to the entry path of the Sling WebDAV bundle (usually below
regular Sling root URL). Issues a HTTP Delete for the uninstall
goal.</li>

<li><b>SlingPostServlet</b>, uses the <a class="externalLink" href="https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html">Sling
Post Servlet</a> for deployment (HTTP POST). Make sure that
<tt>slingUrl</tt> points a path which is handled by the Sling
POST Servlet (usually below regular Sling root URL).</li>
</ol>
This has precedence over the deprecated parameter
<tt>usePut</tt>.<br /><b>Default value is</b>: <tt>WebConsole</tt>.<br /><b>User property is</b>: <tt>sling.deploy.method</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#fileVaultFilterXmlFile">&lt;fileVaultFilterXmlFile&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>Path to META-INF/vault/filter.xml when using FileVault XML
filesystem layout.<br /><b>User property is</b>: <tt>sling.filevault.filterxml.file</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#fileVaultJcrRootFile">&lt;fileVaultJcrRootFile&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>FileVault filesystem layout content root folder.<br /><b>User property is</b>: <tt>sling.filevault.jcr_root.file</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#slingConsoleUrl">&lt;slingConsoleUrl&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>The WebConsole URL of the running Sling instance. This is required
for file system provider operations. If not configured the value of
slingUrl is used.<br /><b>User property is</b>: <tt>sling.console.url</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#slingUrlSuffix">&lt;slingUrlSuffix&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.2.0</tt></td>
            
<td>An optional url suffix which will be appended to the
<tt>sling.url</tt> for use as the real target url. This allows
to configure different target URLs in each POM, while using the
same common <tt>sling.url</tt> in a parent POM (eg.
<tt>sling.url=http://localhost:8080</tt> and
<tt>sling.urlSuffix=/project/specific/path</tt>). This is
typically used in conjunction with WebDAV or SlingPostServlet
deployment methods.<br /><b>User property is</b>: <tt>sling.urlSuffix</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.3CbundleFileName.3E"></a><b><a name="bundleFileName">&lt;bundleFileName&gt;</a></b></h4>
        
<div>The name of the generated JAR file.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>sling.file</tt></li>
          
<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.jar</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CdeployFsResourceBundle.3E"></a><b><a name="deployFsResourceBundle">&lt;deployFsResourceBundle&gt;</a></b></h4>
        
<div>Deploy <tt>org.apache.sling.fsresource</tt> to Sling instance
bundle when it is not deployed already.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.3.0</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.3CdeployFsResourceBundlePrerequisites.3E"></a><b><a name="deployFsResourceBundlePrerequisites">&lt;deployFsResourceBundlePrerequisites&gt;</a></b></h4>
        
<div>Bundles that have to be installed as prerequisites to execute this
goal. With multiple entries in the list different bundles with
different preconditions can be defined.<br />
<b>Default value is:</b>: 

<div>
<pre>
&lt;deployFsResourceBundlePrerequisites&gt;
  &lt;bundlePrerequisite&gt;
    &lt;bundles&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.commons.johnzon&lt;/artifactId&gt;
        &lt;version&gt;1.0.0&lt;/version&gt;
      &lt;/bundle&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
        &lt;artifactId&gt;commons-collections4&lt;/artifactId&gt;
        &lt;version&gt;4.1&lt;/version&gt;
        &lt;symbolicName&gt;org.apache.commons.collections4&lt;/symbolicName&gt;
      &lt;/bundle&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.fsresource&lt;/artifactId&gt;
        &lt;version&gt;2.1.16&lt;/version&gt;
      &lt;/bundle&gt;
    &lt;/bundles&gt;
    &lt;preconditions&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.resourceresolver&lt;/artifactId&gt;
        &lt;version&gt;1.5.18&lt;/version&gt;
      &lt;/bundle&gt;
    &lt;/preconditions&gt;
  &lt;/bundlePrerequisite&gt;
  &lt;bundlePrerequisite&gt;
    &lt;bundles&gt;
      &lt;bundle&gt;
        &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
        &lt;artifactId&gt;org.apache.sling.fsresource&lt;/artifactId&gt;
        &lt;version&gt;1.4.8&lt;/version&gt;
      &lt;/bundle&gt;
    &lt;/bundles&gt;
  &lt;/bundlePrerequisite&gt;
&lt;/deployFsResourceBundlePrerequisites&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.List</tt></li>
          
<li><b>Since</b>: <tt>2.3.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CdeploymentMethod.3E"></a><b><a name="deploymentMethod">&lt;deploymentMethod&gt;</a></b></h4>
        
<div>Bundle deployment method. One of the following three values are
allowed 

<ol style="list-style-type: decimal">

<li><b>WebConsole</b>, uses the <a class="externalLink" href="http://felix.apache.org/documentation/subprojects/apache-felix-web-console/web-console-restful-api.html#post-requests">Felix
Web Console REST API</a> for deployment (HTTP POST). This is the
default. Make sure that <tt>slingUrl</tt> points to the Felix
Web Console in that case.</li>

<li><b>WebDAV</b>, uses <a class="externalLink" href="https://sling.apache.org/documentation/development/repository-based-development.html">WebDAV</a>
for deployment (HTTP PUT). Make sure that <tt>slingUrl</tt>
points to the entry path of the Sling WebDAV bundle (usually below
regular Sling root URL). Issues a HTTP Delete for the uninstall
goal.</li>

<li><b>SlingPostServlet</b>, uses the <a class="externalLink" href="https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html">Sling
Post Servlet</a> for deployment (HTTP POST). Make sure that
<tt>slingUrl</tt> points a path which is handled by the Sling
POST Servlet (usually below regular Sling root URL).</li>
</ol>
This has precedence over the deprecated parameter
<tt>usePut</tt>.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.sling.maven.bundlesupport.deploy.BundleDeploymentMethod</tt></li>
          
<li><b>Since</b>: <tt>2.3.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>sling.deploy.method</tt></li>
          
<li><b>Default</b>: <tt>WebConsole</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CfailOnError.3E"></a><b><a name="failOnError">&lt;failOnError&gt;</a></b></h4>
        
<div>Determines whether or not to fail the build if the HTTP POST or PUT
returns an non-OK response code.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>sling.failOnError</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CfileVaultFilterXmlFile.3E"></a><b><a name="fileVaultFilterXmlFile">&lt;fileVaultFilterXmlFile&gt;</a></b></h4>
        
<div>Path to META-INF/vault/filter.xml when using FileVault XML
filesystem layout.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>sling.filevault.filterxml.file</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CfileVaultJcrRootFile.3E"></a><b><a name="fileVaultJcrRootFile">&lt;fileVaultJcrRootFile&gt;</a></b></h4>
        
<div>FileVault filesystem layout content root folder.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>sling.filevault.jcr_root.file</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cpassword.3E"></a><b><a name="password">&lt;password&gt;</a></b></h4>
        
<div>The password to authenticate at the running Sling instance.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>sling.password</tt></li>
          
<li><b>Default</b>: <tt>admin</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cskip.3E"></a><b><a name="skip">&lt;skip&gt;</a></b></h4>
        
<div>If set to <tt>true</tt> Sling File System Resource
mount/unmount commands are ignored.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>sling.fsmount.skip</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CslingConsoleUrl.3E"></a><b><a name="slingConsoleUrl">&lt;slingConsoleUrl&gt;</a></b></h4>
        
<div>The WebConsole URL of the running Sling instance. This is required
for file system provider operations. If not configured the value of
slingUrl is used.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>sling.console.url</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CslingUrl.3E"></a><b><a name="slingUrl">&lt;slingUrl&gt;</a></b></h4>
        
<div>The URL of the running Sling instance. 

<p>The default is only useful for <b>WebConsole</b>
deployment.</p>

<p>For <b>WebDAV</b> deployment it is recommended to
include the Sling Simple WebDAV servlet root, for instance <a class="externalLink" href="http://localhost:8080/dav/default/libs/sling/install">http://localhost:8080/dav/default/libs/sling/install</a>.
Omitting the <tt>dav/default</tt> segment can lead to conflicts
with other servlets.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>sling.url</tt></li>
          
<li><b>Default</b>: <tt>http://localhost:8080/system/console</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CslingUrlSuffix.3E"></a><b><a name="slingUrlSuffix">&lt;slingUrlSuffix&gt;</a></b></h4>
        
<div>An optional url suffix which will be appended to the
<tt>sling.url</tt> for use as the real target url. This allows
to configure different target URLs in each POM, while using the
same common <tt>sling.url</tt> in a parent POM (eg.
<tt>sling.url=http://localhost:8080</tt> and
<tt>sling.urlSuffix=/project/specific/path</tt>). This is
typically used in conjunction with WebDAV or SlingPostServlet
deployment methods.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>sling.urlSuffix</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cuser.3E"></a><b><a name="user">&lt;user&gt;</a></b></h4>
        
<div>The user name to authenticate at the running Sling instance.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.2.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>sling.user</tt></li>
          
<li><b>Default</b>: <tt>admin</tt></li>
        </ul>
      </div></div>
    </div>
  

        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2007&#x2013;2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
