<!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>Source Feature Generation Plugin &#x2013; 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</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 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><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.3.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="aarchive"></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="abrandingPlugin"></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="aexcludes"></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="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-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="aincludeBinaryFeature"></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="alabelSuffix"></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="aplugins"></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="areuseBrandingPlugin"></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="askip"></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 span12">Copyright &copy;                    2010-2018
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

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