<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 from target/generated-site/xdoc/source-feature-mojo.xml at 2019-04-05
 | Rendered using Apache Maven Fluido Skin 1.7
-->
<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="20190405" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Source Feature Generation Plugin &#x2013; tycho-source-feature:source-feature</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.7.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.7.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><div id="bannerLeft"><h2>Source Feature Generation 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-04-05<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.4.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">Tycho Extras</li>
    <li><a href="../index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../tycho-p2-extras-plugin/plugin-info.html" title="P2 Extras Plugin"><span class="none"></span>P2 Extras Plugin</a></li>
    <li><a href="../target-platform-validation-plugin/plugin-info.html" title="Target Platform Validation Plugin"><span class="none"></span>Target Platform Validation Plugin</a></li>
    <li><a href="../tycho-eclipserun-plugin/plugin-info.html" title="Eclipserun Plugin"><span class="none"></span>Eclipserun Plugin</a></li>
    <li><a href="../tycho-document-bundle-plugin/plugin-info.html" title="Document Bundle Plugin"><span class="none"></span>Document Bundle Plugin</a></li>
    <li><a href="../tycho-source-feature-plugin/plugin-info.html" title="Source Feature Generation Plugin"><span class="none"></span>Source Feature Generation Plugin</a></li>
    <li><a href="../tycho-pack200/index.html" title="Pack200 Plugins"><span class="icon-chevron-down"></span>Pack200 Plugins</a>
    <ul class="nav nav-list">
    <li><a href="../tycho-pack200/tycho-pack200a-plugin/plugin-info.html" title="Normalization Plugin"><span class="none"></span>Normalization Plugin</a></li>
    <li><a href="../tycho-pack200/tycho-pack200b-plugin/plugin-info.html" title="Pack Plugin"><span class="none"></span>Pack Plugin</a></li>
    </ul>
</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="tycho-source-feature:source-feature"></a>tycho-source-feature:source-feature</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho.extras:tycho-source-feature-plugin:1.4.0:source-feature</p>
      
<p><b>Description</b>:</p>
      
<div>Generates a source feature for projects of packaging type
<tt>eclipse-feature</tt>. By default, the generated source
feature 

<ul>

<li>Declares feature id
<tt>&lt;originalFeatureId&gt;.source</tt></li>

<li>Declares feature label <tt>&quot;&lt;originalFeatureLabel&gt;
Developer Resources&quot;</tt></li>

<li>If present, reuses feature provider, description, copyright and
license as well as respective URLs from
&lt;originalFeature&gt;</li>

<li>Includes all plugins included by &lt;originalFeature&gt;, but
each with <tt>.source</tt> appended to each plugin id</li>

<li>Includes all features included by &lt;originalFeature&gt;, but
each with <tt>.source</tt> appended to each feature id</li>

<li>Includes the original feature. This ensures that binaries and
corresponding sources match.</li>
</ul>
Source feature generation can be customized by adding files under
path <tt>sourceTemplateFeature/</tt>. Files added here will be
added to the root of the source feature jar. Especially, if file
<tt>sourceTemplateFeature/feature.properties</tt> is found,
values in this file override values of respective keys in
<tt>&lt;originalFeature&gt;/feature.properties</tt>.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</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>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="#archive">&lt;archive&gt;</a></tt></td>
            
<td><tt>MavenArchiveConfiguration</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#brandingPlugin">&lt;brandingPlugin&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Use this to explicitly set the <a class="externalLink" href="http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.pde.doc.user%2Fguide%2Ftools%2Feditors%2Ffeature_editor%2Ffeature_editor.htm">branding
plugin attribute</a> of the generated source feature (overrides
<tt>reuseBrandingPlugin</tt>).<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#excludes">&lt;excludes&gt;</a></tt></td>
            
<td><tt>PlexusConfiguration</tt></td>
            
<td><tt>-</tt></td>
            
<td>Bundles and features that do not have corresponding sources.
Example: 

<div>
<pre>
&lt;excludes&gt;
  &lt;plugin id=&quot;plugin.nosource&quot;/&gt;
  &lt;feature id=&quot;feature.nosource&quot;/&gt;
&lt;/excludes&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#finalName">&lt;finalName&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The filename to be used for the generated archive file. For the
source-feature goal, &quot;-sources-feature&quot; is appended to this
filename.<br /><b>User property is</b>: <tt>project.build.finalName</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#includeBinaryFeature">&lt;includeBinaryFeature&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Whether to add an include dependency from the source feature to the
corresponding binary feature. If <tt>true</tt>, this ensures
the version of the installed sources matches the binaries.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#labelSuffix">&lt;labelSuffix&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Source feature label suffix. Unless explicitly provided in
<tt>sourceTemplateFeature/feature.properties</tt>, this suffix
will be appended to the original feature label to construct the
source feature label.<br /><b>Default value is</b>: <tt> Developer Resources</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#plugins">&lt;plugins&gt;</a></tt></td>
            
<td><tt>PlexusConfiguration</tt></td>
            
<td><tt>-</tt></td>
            
<td>Additional plugins to include in the generated source feature.
Beware that these additional plugins are not considered during
build target platform calculation and ordering of reactor projects.
Use &lt;extraRequirements&gt; dependency resolver configuration to
guarantee proper reactor build order. 

<p><b>WARNING</b> This experimental parameter may be
removed from future source-feature mojo versions without prior
notice.</p><br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#reuseBrandingPlugin">&lt;reuseBrandingPlugin&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Whether to reuse an explicit branding plugin from the binary
feature for the generated source feature.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#skip">&lt;skip&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Whether to skip source feature generation.<br /><b>Default value is</b>: <tt>false</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.3Carchive.3E"></a><b><a name="archive">&lt;archive&gt;</a></b></h4>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.maven.archiver.MavenArchiveConfiguration</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CbrandingPlugin.3E"></a><b><a name="brandingPlugin">&lt;brandingPlugin&gt;</a></b></h4>
        
<div>Use this to explicitly set the <a class="externalLink" href="http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.pde.doc.user%2Fguide%2Ftools%2Feditors%2Ffeature_editor%2Ffeature_editor.htm">branding
plugin attribute</a> of the generated source feature (overrides
<tt>reuseBrandingPlugin</tt>).</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.3Cexcludes.3E"></a><b><a name="excludes">&lt;excludes&gt;</a></b></h4>
        
<div>Bundles and features that do not have corresponding sources.
Example: 

<div>
<pre>
&lt;excludes&gt;
  &lt;plugin id=&quot;plugin.nosource&quot;/&gt;
  &lt;feature id=&quot;feature.nosource&quot;/&gt;
&lt;/excludes&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.codehaus.plexus.configuration.PlexusConfiguration</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CfinalName.3E"></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-feature goal, &quot;-sources-feature&quot; is appended to this
filename.</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>project.build.finalName</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CincludeBinaryFeature.3E"></a><b><a name="includeBinaryFeature">&lt;includeBinaryFeature&gt;</a></b></h4>
        
<div>Whether to add an include dependency from the source feature to the
corresponding binary feature. If <tt>true</tt>, this ensures
the version of the installed sources matches the binaries.</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.3ClabelSuffix.3E"></a><b><a name="labelSuffix">&lt;labelSuffix&gt;</a></b></h4>
        
<div>Source feature label suffix. Unless explicitly provided in
<tt>sourceTemplateFeature/feature.properties</tt>, this suffix
will be appended to the original feature label to construct the
source feature label.</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> Developer Resources</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3Cplugins.3E"></a><b><a name="plugins">&lt;plugins&gt;</a></b></h4>
        
<div>Additional plugins to include in the generated source feature.
Beware that these additional plugins are not considered during
build target platform calculation and ordering of reactor projects.
Use &lt;extraRequirements&gt; dependency resolver configuration to
guarantee proper reactor build order. 

<p><b>WARNING</b> This experimental parameter may be
removed from future source-feature mojo versions without prior
notice.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.codehaus.plexus.configuration.PlexusConfiguration</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="a.3CreuseBrandingPlugin.3E"></a><b><a name="reuseBrandingPlugin">&lt;reuseBrandingPlugin&gt;</a></b></h4>
        
<div>Whether to reuse an explicit branding plugin from the binary
feature for the generated source feature.</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.3Cskip.3E"></a><b><a name="skip">&lt;skip&gt;</a></b></h4>
        
<div>Whether to skip source feature generation.</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>
      </div></div>
    </div>
  

        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2010&#x2013;2019
<a href="http://www.eclipse.org/">Eclipse Foundation</a>.
All rights reserved.</p>
        </div>
      </div>
    </footer>
  </body>
</html>
