<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-12-17
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<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="20181217" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho OSGi Source Plugin &#x2013; tycho-source:plugin-source</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.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.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
        
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Tycho OSGi Source 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-12-17</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.3.0</li>
                      
                
                    
      
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Tycho</li>
                                
      <li>
    
                          <a href="../index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-compiler-plugin/plugin-info.html" title="Compiler Plugin">
          <i class="none"></i>
        Compiler Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-packaging-plugin/plugin-info.html" title="Packaging Plugin">
          <i class="none"></i>
        Packaging Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../BuildProperties.html" title="Build Properties">
          <i class="none"></i>
        Build Properties</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-surefire/tycho-surefire-plugin/plugin-info.html" title="Surefire Plugin">
          <i class="none"></i>
        Surefire Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-publisher-plugin/plugin-info.html" title="p2 Publisher Plugin">
          <i class="none"></i>
        p2 Publisher Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-repository-plugin/plugin-info.html" title="p2 Repository Plugin">
          <i class="none"></i>
        p2 Repository Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-director-plugin/plugin-info.html" title="p2 Director Plugin">
          <i class="none"></i>
        p2 Director Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-source-plugin/plugin-info.html" title="Source Plugin">
          <i class="none"></i>
        Source Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-release/tycho-versions-plugin/plugin-info.html" title="Versions Plugin">
          <i class="none"></i>
        Versions Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-pomgenerator-plugin/plugin-info.html" title="POM Generator Plugin">
          <i class="none"></i>
        POM Generator Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../TychoProperties.html" title="Tycho Properties">
          <i class="none"></i>
        Tycho Properties</a>
            </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <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="span9" >
                                  
            
  
    <div class="section">
<h2><a name="tycho-source:plugin-source"></a>tycho-source:plugin-source</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-source-plugin:1.3.0:plugin-source</p>
      
<p><b>Description</b>:</p>
      
<div>Goal to create a JAR-package containing all the source files of a
osgi project.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
        
<li>Since version: <tt>2.0.3</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="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="#additionalFileSets">&lt;additionalFileSets&gt;</a></tt></td>
            
<td><tt>DefaultFileSet[]</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>Additional files to be included in the source bundle jar. This can
be used when <tt>src.includes</tt> in build.properties is not
flexible enough , e.g. for files which would otherwise conflict
with files in <tt>bin.includes</tt><br />
Example:<br />
 

<div>
<pre>
&lt;additionalFileSets&gt;
 &lt;fileSet&gt;
  &lt;directory&gt;${project.basedir}/sourceIncludes/&lt;/directory&gt;
  &lt;includes&gt;
   &lt;include&gt;**/*&lt;/include&gt;
  &lt;/includes&gt;
 &lt;/fileSet&gt;     
&lt;/additionalFileSets&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#archive">&lt;archive&gt;</a></tt></td>
            
<td><tt>MavenArchiveConfiguration</tt></td>
            
<td><tt>2.1</tt></td>
            
<td>The archive configuration to use. See <a class="externalLink" href="http://maven.apache.org/shared/maven-archiver/index.html">Maven
Archiver Reference</a>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#attach">&lt;attach&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>Specifies whether or not to attach the artifact to the project<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>attach</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#classifier">&lt;classifier&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>The source bundles classifier. The name of the source bundle will
be <tt>finalName- classifier.jar</tt><br /><b>Default value is</b>: <tt>sources</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#distinctSourceRoots">&lt;distinctSourceRoots&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>Whether sources for nested jars should be put into distinct source
root folders inside the source jar (one source root per nested
jar). E.g. if this paramater is <tt>true</tt> and there is a
nested jar named <tt>foo.jar</tt>, all of its sources will go
into folder <tt>foosrc/</tt>. Otherwise all sources for all
jars, nested or not, will go into the root of the source jar (this
is the default as it provides interoperability with maven source
jars).<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#excludeResources">&lt;excludeResources&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.0.4</tt></td>
            
<td>Specifies whether or not to exclude resources from the sources-jar.
This can be convenient if your project includes large resources,
such as images, and you don't want to include them in the
sources-jar.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>source.excludeResources</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#excludes">&lt;excludes&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>2.1</tt></td>
            
<td>List of files to exclude. Specified as fileset patterns which are
relative to the input directory whose contents is being packaged
into the JAR.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#finalName">&lt;finalName&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>The filename to be used for the generated archive file. For the
source:jar goal, &quot;-sources&quot; is appended to this filename. For the
source:test-jar goal, &quot;-test-sources&quot; is appended.<br /><b>User property is</b>: <tt>project.build.finalName</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#forceCreation">&lt;forceCreation&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.1</tt></td>
            
<td>NOT SUPPORTED. Whether creating the archive should be forced. If
set to true, the jar will always be created. If set to false, the
jar will only be created when the sources are newer than the jar.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>source.forceCreation</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#includePom">&lt;includePom&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.1</tt></td>
            
<td>Specifies whether or not to include the POM file in the
sources-jar.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>source.includePom</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#includes">&lt;includes&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>2.1</tt></td>
            
<td>List of files to include. Specified as fileset patterns which are
relative to the input directory whose contents is being packaged
into the JAR.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#outputDirectory">&lt;outputDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>The directory where the generated archive file will be put.<br /><b>User property is</b>: <tt>project.build.directory</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#qualifier">&lt;qualifier&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>Build qualifier. Recommended way to set this parameter is using
build-qualifier goal. Only used when creating a source bundle.<br /><b>User property is</b>: <tt>buildQualifier</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#sourceBundle">&lt;sourceBundle&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>Whether the source jar should be an Eclipse source bundle.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#sourceBundleSuffix">&lt;sourceBundleSuffix&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>The suffix to be added to the symbolic name of the bundle to
construct the symbolic name of the Eclipse source bundle.<br /><b>Default value is</b>: <tt>.source</tt>.<br /><b>User property is</b>: <tt>sourceBundleSuffix</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#strictSrcIncludes">&lt;strictSrcIncludes&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>If set to <tt>true</tt> (the default), missing build.properties
src.includes will cause build failure. If set to
<tt>false</tt>, missing build.properties src.includes will be
reported as warnings but the build will not fail.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#useDefaultExcludes">&lt;useDefaultExcludes&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.1</tt></td>
            
<td>Exclude commonly excluded files such as SCM configuration. These
are defined in the plexus FileUtils.getDefaultExcludes()<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#useDefaultManifestFile">&lt;useDefaultManifestFile&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.1</tt></td>
            
<td>Set this to <tt>true</tt> to enable the use of the
<tt>defaultManifestFile</tt>. <br /><br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#useDefaultSourceExcludes">&lt;useDefaultSourceExcludes&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>2.0.3</tt></td>
            
<td>Whether default source excludes for SCM files defined in
AbstractScanner#DEFAULTEXCLUDES should be used.<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="aadditionalFileSets"></a><b><a name="additionalFileSets">&lt;additionalFileSets&gt;</a></b></h4>
        
<div>Additional files to be included in the source bundle jar. This can
be used when <tt>src.includes</tt> in build.properties is not
flexible enough , e.g. for files which would otherwise conflict
with files in <tt>bin.includes</tt><br />
Example:<br />
 

<div>
<pre>
&lt;additionalFileSets&gt;
 &lt;fileSet&gt;
  &lt;directory&gt;${project.basedir}/sourceIncludes/&lt;/directory&gt;
  &lt;includes&gt;
   &lt;include&gt;**/*&lt;/include&gt;
  &lt;/includes&gt;
 &lt;/fileSet&gt;     
&lt;/additionalFileSets&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.codehaus.plexus.archiver.util.DefaultFileSet[]</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aarchive"></a><b><a name="archive">&lt;archive&gt;</a></b></h4>
        
<div>The archive configuration to use. See <a class="externalLink" href="http://maven.apache.org/shared/maven-archiver/index.html">Maven
Archiver Reference</a>.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.maven.archiver.MavenArchiveConfiguration</tt></li>
          
<li><b>Since</b>: <tt>2.1</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aattach"></a><b><a name="attach">&lt;attach&gt;</a></b></h4>
        
<div>Specifies whether or not to attach the artifact to the project</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>attach</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aclassifier"></a><b><a name="classifier">&lt;classifier&gt;</a></b></h4>
        
<div>The source bundles classifier. The name of the source bundle will
be <tt>finalName- classifier.jar</tt></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>sources</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="adistinctSourceRoots"></a><b><a name="distinctSourceRoots">&lt;distinctSourceRoots&gt;</a></b></h4>
        
<div>Whether sources for nested jars should be put into distinct source
root folders inside the source jar (one source root per nested
jar). E.g. if this paramater is <tt>true</tt> and there is a
nested jar named <tt>foo.jar</tt>, all of its sources will go
into folder <tt>foosrc/</tt>. Otherwise all sources for all
jars, nested or not, will go into the root of the source jar (this
is the default as it provides interoperability with maven source
jars).</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</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="aexcludeResources"></a><b><a name="excludeResources">&lt;excludeResources&gt;</a></b></h4>
        
<div>Specifies whether or not to exclude resources from the sources-jar.
This can be convenient if your project includes large resources,
such as images, and you don't want to include them in the
sources-jar.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.0.4</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>source.excludeResources</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aexcludes"></a><b><a name="excludes">&lt;excludes&gt;</a></b></h4>
        
<div>List of files to exclude. Specified as fileset patterns which are
relative to the input directory whose contents is being packaged
into the JAR.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Since</b>: <tt>2.1</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="afinalName"></a><b><a name="finalName">&lt;finalName&gt;</a></b></h4>
        
<div>The filename to be used for the generated archive file. For the
source:jar goal, &quot;-sources&quot; is appended to this filename. For the
source:test-jar goal, &quot;-test-sources&quot; is appended.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>project.build.finalName</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aforceCreation"></a><b><a name="forceCreation">&lt;forceCreation&gt;</a></b></h4>
        
<div>NOT SUPPORTED. Whether creating the archive should be forced. If
set to true, the jar will always be created. If set to false, the
jar will only be created when the sources are newer than the jar.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.1</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>source.forceCreation</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aincludePom"></a><b><a name="includePom">&lt;includePom&gt;</a></b></h4>
        
<div>Specifies whether or not to include the POM file in the
sources-jar.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.1</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>source.includePom</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aincludes"></a><b><a name="includes">&lt;includes&gt;</a></b></h4>
        
<div>List of files to include. Specified as fileset patterns which are
relative to the input directory whose contents is being packaged
into the JAR.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Since</b>: <tt>2.1</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aoutputDirectory"></a><b><a name="outputDirectory">&lt;outputDirectory&gt;</a></b></h4>
        
<div>The directory where the generated archive file will be put.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>project.build.directory</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aqualifier"></a><b><a name="qualifier">&lt;qualifier&gt;</a></b></h4>
        
<div>Build qualifier. Recommended way to set this parameter is using
build-qualifier goal. Only used when creating a source bundle.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>buildQualifier</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="asourceBundle"></a><b><a name="sourceBundle">&lt;sourceBundle&gt;</a></b></h4>
        
<div>Whether the source jar should be an Eclipse source bundle.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</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="asourceBundleSuffix"></a><b><a name="sourceBundleSuffix">&lt;sourceBundleSuffix&gt;</a></b></h4>
        
<div>The suffix to be added to the symbolic name of the bundle to
construct the symbolic name of the Eclipse source bundle.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>sourceBundleSuffix</tt></li>
          
<li><b>Default</b>: <tt>.source</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="astrictSrcIncludes"></a><b><a name="strictSrcIncludes">&lt;strictSrcIncludes&gt;</a></b></h4>
        
<div>If set to <tt>true</tt> (the default), missing build.properties
src.includes will cause build failure. If set to
<tt>false</tt>, missing build.properties src.includes will be
reported as warnings but the build will not fail.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</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="auseDefaultExcludes"></a><b><a name="useDefaultExcludes">&lt;useDefaultExcludes&gt;</a></b></h4>
        
<div>Exclude commonly excluded files such as SCM configuration. These
are defined in the plexus FileUtils.getDefaultExcludes()</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.1</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="auseDefaultManifestFile"></a><b><a name="useDefaultManifestFile">&lt;useDefaultManifestFile&gt;</a></b></h4>
        
<div>Set this to <tt>true</tt> to enable the use of the
<tt>defaultManifestFile</tt>. <br /></div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.1</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="auseDefaultSourceExcludes"></a><b><a name="useDefaultSourceExcludes">&lt;useDefaultSourceExcludes&gt;</a></b></h4>
        
<div>Whether default source excludes for SCM files defined in
AbstractScanner#DEFAULTEXCLUDES should be used.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>2.0.3</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 span12">Copyright &copy;                    2008-2018
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>
