<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at Mar 15, 2013
 | 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="20130315" />
    <meta http-equiv="Content-Language" content="en" />
    <title>
    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 (Incubation)</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: 2013-03-15</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 0.17.0</li>
                      
                
            
      
                                              
    <li class="pull-right">              <a href="http://wiki.eclipse.org/Development_Resources/HOWTO/Incubation_Phase#.281.29_What_Is_Incubation.3F" class="externalLink" title="This content is PRELIMINARY API and still subject to change">
        This content is PRELIMINARY API and still subject to change</a>
  </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="../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>
            </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>tycho-source:plugin-source<a name="tycho-source:plugin-source"></a></h2>
      <p><b>Full name</b>:</p>
      <p>org.eclipse.tycho:tycho-source-plugin:0.17.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 lifecycle phase: <tt>prepare-package</tt>.</li>
      </ul>
      <div class="section"><h3>Optional Parameters<a name="Optional_Parameters"></a></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="#archive">archive</a></b></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="a">
            <td><b><a href="#attach">attach</a></b></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>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#distinctSourceRoots">distinctSourceRoots</a></b></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>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#excludeResources">excludeResources</a></b></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>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#excludes">excludes</a></b></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><b><a href="#finalName">finalName</a></b></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>Default value is</b>: <tt>${project.build.finalName}</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#forceCreation">forceCreation</a></b></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>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#includePom">includePom</a></b></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>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#includes">includes</a></b></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><b><a href="#outputDirectory">outputDirectory</a></b></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>Default value is</b>: <tt>${project.build.directory}</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#qualifier">qualifier</a></b></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 /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#sourceBundle">sourceBundle</a></b></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>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#sourceBundleSuffix">sourceBundleSuffix</a></b></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>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#strictSrcIncludes">strictSrcIncludes</a></b></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>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#useDefaultExcludes">useDefaultExcludes</a></b></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>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#useDefaultManifestFile">useDefaultManifestFile</a></b></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>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#useDefaultSourceExcludes">useDefaultSourceExcludes</a></b></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>.</td>
          </tr>
        </table>
      </div>
      <div class="section"><h3>Parameter Details<a name="Parameter_Details"></a></h3>
        <p><b><a name="archive">archive</a>:</b></p>
        <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 /><p><b><a name="attach">attach</a>:</b></p>
        <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>Expression</b>: <tt>${attach}</tt></li>
          <li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /><p><b><a name="distinctSourceRoots">distinctSourceRoots</a>:</b></p>
        <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 /><p><b><a name="excludeResources">excludeResources</a>:</b></p>
        <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>Expression</b>: <tt>${source.excludeResources}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="excludes">excludes</a>:</b></p>
        <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 /><p><b><a name="finalName">finalName</a>:</b></p>
        <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>Default</b>: <tt>${project.build.finalName}</tt></li>
        </ul><hr /><p><b><a name="forceCreation">forceCreation</a>:</b></p>
        <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>Expression</b>: <tt>${source.forceCreation}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="includePom">includePom</a>:</b></p>
        <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>Expression</b>: <tt>${source.includePom}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="includes">includes</a>:</b></p>
        <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 /><p><b><a name="outputDirectory">outputDirectory</a>:</b></p>
        <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>Default</b>: <tt>${project.build.directory}</tt></li>
        </ul><hr /><p><b><a name="qualifier">qualifier</a>:</b></p>
        <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>Expression</b>: <tt>${buildQualifier}</tt></li>
        </ul><hr /><p><b><a name="sourceBundle">sourceBundle</a>:</b></p>
        <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 /><p><b><a name="sourceBundleSuffix">sourceBundleSuffix</a>:</b></p>
        <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>Expression</b>: <tt>${sourceBundleSuffix}</tt></li>
          <li><b>Default</b>: <tt>.source</tt></li>
        </ul><hr /><p><b><a name="strictSrcIncludes">strictSrcIncludes</a>:</b></p>
        <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 /><p><b><a name="useDefaultExcludes">useDefaultExcludes</a>:</b></p>
        <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 /><p><b><a name="useDefaultManifestFile">useDefaultManifestFile</a>:</b></p>
        <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 /><p><b><a name="useDefaultSourceExcludes">useDefaultSourceExcludes</a>:</b></p>
        <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>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2008-2013
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
            
      </div>

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