<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-01-26
 | 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="20180126" />
    <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-01-26</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.1.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.1.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><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>.<br /></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><a name="Parameter_Details"></a>Parameter Details</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-2018
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

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