<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2016-08-09
 | 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="20160809" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Source Feature Generation Plugin (Incubation) - 
    tycho-source-feature:source-feature</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>Source Feature Generation 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: 2016-08-09</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 0.26.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 Extras</li>
                                
      <li>
    
                          <a href="../index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2-extras-plugin/plugin-info.html" title="P2 Extras Plugin">
          <i class="none"></i>
        P2 Extras Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../target-platform-validation-plugin/plugin-info.html" title="Target Platform Validation Plugin">
          <i class="none"></i>
        Target Platform Validation Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-eclipserun-plugin/plugin-info.html" title="Eclipserun Plugin">
          <i class="none"></i>
        Eclipserun Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-document-bundle-plugin/plugin-info.html" title="Document Bundle Plugin">
          <i class="none"></i>
        Document Bundle Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-source-feature-plugin/plugin-info.html" title="Source Feature Generation Plugin">
          <i class="none"></i>
        Source Feature Generation Plugin</a>
            </li>
                                                                                
      <li>
    
                          <a href="../tycho-pack200/index.html" title="Pack200 Plugins">
          <i class="icon-chevron-down"></i>
        Pack200 Plugins</a>
                    <ul class="nav nav-list">
                      
      <li>
    
                          <a href="../tycho-pack200/tycho-pack200a-plugin/plugin-info.html" title="Normalization Plugin">
          <i class="none"></i>
        Normalization Plugin</a>
            </li>
                      
      <li>
    
                          <a href="../tycho-pack200/tycho-pack200b-plugin/plugin-info.html" title="Pack Plugin">
          <i class="none"></i>
        Pack Plugin</a>
            </li>
              </ul>
        </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-feature:source-feature<a name="tycho-source-feature:source-feature"></a></h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho.extras:tycho-source-feature-plugin:0.26.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>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>-</tt></td>
            
<td>(no description)<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#brandingPlugin">brandingPlugin</a></b></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><b><a href="#excludes">excludes</a></b></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><b><a href="#finalName">finalName</a></b></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>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#includeBinaryFeature">includeBinaryFeature</a></b></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><b><a href="#labelSuffix">labelSuffix</a></b></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><b><a href="#plugins">plugins</a></b></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><b><a href="#reuseBrandingPlugin">reuseBrandingPlugin</a></b></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><b><a href="#skip">skip</a></b></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>Parameter Details<a name="Parameter_Details"></a></h3>
        
<p><b><a name="archive">archive</a>:</b></p>
        
<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 />
<p><b><a name="brandingPlugin">brandingPlugin</a>:</b></p>
        
<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 />
<p><b><a name="excludes">excludes</a>:</b></p>
        
<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 />
<p><b><a name="finalName">finalName</a>:</b></p>
        
<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 />
<p><b><a name="includeBinaryFeature">includeBinaryFeature</a>:</b></p>
        
<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 />
<p><b><a name="labelSuffix">labelSuffix</a>:</b></p>
        
<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 />
<p><b><a name="plugins">plugins</a>:</b></p>
        
<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 />
<p><b><a name="reuseBrandingPlugin">reuseBrandingPlugin</a>:</b></p>
        
<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 />
<p><b><a name="skip">skip</a>:</b></p>
        
<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>

    <hr/>

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

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