<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-06-05
 | 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="20180605" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho OSGi Packaging Plugin &#x2013; tycho-packaging:package-plugin</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 Packaging 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-06-05</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.2.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</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="../BuildProperties.html" title="Build Properties">
          <i class="none"></i>
        Build Properties</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>
                  
      <li>
    
                          <a href="../tycho-pomgenerator-plugin/plugin-info.html" title="POM Generator Plugin">
          <i class="none"></i>
        POM Generator Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../TychoProperties.html" title="Tycho Properties">
          <i class="none"></i>
        Tycho Properties</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><a name="tycho-packaging:package-plugin"></a>tycho-packaging:package-plugin</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-packaging-plugin:1.2.0:package-plugin</p>
      
<p><b>Description</b>:</p>
      
<div>Creates a jar-based plugin and attaches it as an artifact</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
      </ul>
      
<div class="section">
<h3><a name="Required_Parameters"></a>Required 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="#buildDirectory">buildDirectory</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The output directory of the jar file By default this is the Maven
&quot;target/&quot; directory.<br /><b>User property is</b>: <tt>project.build.directory</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#finalName">finalName</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Name of the generated JAR.<br /><b>User property is</b>: <tt>project.build.finalName</tt>.</td>
          </tr>
        </table>
      </div>
      
<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="#additionalFileSets">additionalFileSets</a></b></td>
            
<td><tt>DefaultFileSet[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Additional files to be included in the bundle jar. This can be used
when <tt>bin.includes</tt> in build.properties is not flexible
enough , e.g. for generated files. If conflicting, additional files
win over <tt>bin.includes</tt><br />
Example:<br />
 

<div>
<pre>
&lt;additionalFileSets&gt;
 &lt;fileSet&gt;
  &lt;directory&gt;${project.build.directory}/mytool-gen/&lt;/directory&gt;
  &lt;includes&gt;
   &lt;include&gt;**/*&lt;/include&gt;
  &lt;/includes&gt;
 &lt;/fileSet&gt;     
&lt;/additionalFileSets&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#archive">archive</a></b></td>
            
<td><tt>MavenArchiveConfiguration</tt></td>
            
<td><tt>-</tt></td>
            
<td>The <a class="externalLink" href="http://maven.apache.org/shared/maven-archiver/">maven
archiver</a> to use. One of the archiver properties is the
<tt>addMavenDescriptor</tt> flag, which indicates whether the
generated archive will contain the pom.xml and pom.properties file.
If no archive configuration is specified, the default value is
<tt>true</tt>. If the maven descriptor should not be added to
the artifact, use the following configuration: 

<div>
<pre>
&lt;plugin&gt;
  &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
  &lt;artifactId&gt;tycho-packaging-plugin&lt;/artifactId&gt;
  &lt;version&gt;${tycho-version}&lt;/version&gt;
  &lt;configuration&gt;
    &lt;archive&gt;
      &lt;addMavenDescriptor&gt;false&lt;/addMavenDescriptor&gt;
    &lt;/archive&gt;
  &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#qualifier">qualifier</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Build qualifier. Recommended way to set this parameter is using
build-qualifier goal.<br /><b>User property is</b>: <tt>buildQualifier</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#sourceReferences">sourceReferences</a></b></td>
            
<td><tt>SourceReferences</tt></td>
            
<td><tt>-</tt></td>
            
<td>Whether to generate an <a class="externalLink" href="http://wiki.eclipse.org/PDE/UI/SourceReferences">Eclipse-SourceReferences</a>
MANIFEST header. When using this parameter, property
${tycho.scmUrl} must be set and be a valid <a class="externalLink" href="http://maven.apache.org/scm/scm-url-format.html">maven SCM
URL</a>. Example configuration: 

<div>
<pre>
        &lt;sourceReferences&gt;
          &lt;generate&gt;true&lt;/generate&gt;
        &lt;/sourceReferences&gt;
</pre></div>

Note that a <tt>SourceReferencesProvider</tt> component must be
registered for the SCM type being used. You may also override the
generated value by configuring: 

<div>
<pre>
        &lt;sourceReferences&gt;
          &lt;generate&gt;true&lt;/generate&gt;
          &lt;customValue&gt;scm:myscm:customSourceReferenceValue&lt;/customValue&gt;
        &lt;/sourceReferences&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#strictBinIncludes">strictBinIncludes</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If set to <tt>true</tt> (the default), missing build.properties
bin.includes will cause build failure. If set to
<tt>false</tt>, missing build.properties bin.includes will be
reported as warnings but the build will not fail.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#useDefaultExcludes">useDefaultExcludes</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="additionalFileSets">additionalFileSets</a>:</b></p>
        
<div>Additional files to be included in the bundle jar. This can be used
when <tt>bin.includes</tt> in build.properties is not flexible
enough , e.g. for generated files. If conflicting, additional files
win over <tt>bin.includes</tt><br />
Example:<br />
 

<div>
<pre>
&lt;additionalFileSets&gt;
 &lt;fileSet&gt;
  &lt;directory&gt;${project.build.directory}/mytool-gen/&lt;/directory&gt;
  &lt;includes&gt;
   &lt;include&gt;**/*&lt;/include&gt;
  &lt;/includes&gt;
 &lt;/fileSet&gt;     
&lt;/additionalFileSets&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.codehaus.plexus.archiver.util.DefaultFileSet[]</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="archive">archive</a>:</b></p>
        
<div>The <a class="externalLink" href="http://maven.apache.org/shared/maven-archiver/">maven
archiver</a> to use. One of the archiver properties is the
<tt>addMavenDescriptor</tt> flag, which indicates whether the
generated archive will contain the pom.xml and pom.properties file.
If no archive configuration is specified, the default value is
<tt>true</tt>. If the maven descriptor should not be added to
the artifact, use the following configuration: 

<div>
<pre>
&lt;plugin&gt;
  &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
  &lt;artifactId&gt;tycho-packaging-plugin&lt;/artifactId&gt;
  &lt;version&gt;${tycho-version}&lt;/version&gt;
  &lt;configuration&gt;
    &lt;archive&gt;
      &lt;addMavenDescriptor&gt;false&lt;/addMavenDescriptor&gt;
    &lt;/archive&gt;
  &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div></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="buildDirectory">buildDirectory</a>:</b></p>
        
<div>The output directory of the jar file By default this is the Maven
&quot;target/&quot; directory.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>project.build.directory</tt></li>
        </ul><hr />
<p><b><a name="finalName">finalName</a>:</b></p>
        
<div>Name of the generated JAR.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>project.build.finalName</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.</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>buildQualifier</tt></li>
        </ul><hr />
<p><b><a name="sourceReferences">sourceReferences</a>:</b></p>
        
<div>Whether to generate an <a class="externalLink" href="http://wiki.eclipse.org/PDE/UI/SourceReferences">Eclipse-SourceReferences</a>
MANIFEST header. When using this parameter, property
${tycho.scmUrl} must be set and be a valid <a class="externalLink" href="http://maven.apache.org/scm/scm-url-format.html">maven SCM
URL</a>. Example configuration: 

<div>
<pre>
        &lt;sourceReferences&gt;
          &lt;generate&gt;true&lt;/generate&gt;
        &lt;/sourceReferences&gt;
</pre></div>

Note that a <tt>SourceReferencesProvider</tt> component must be
registered for the SCM type being used. You may also override the
generated value by configuring: 

<div>
<pre>
        &lt;sourceReferences&gt;
          &lt;generate&gt;true&lt;/generate&gt;
          &lt;customValue&gt;scm:myscm:customSourceReferenceValue&lt;/customValue&gt;
        &lt;/sourceReferences&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.packaging.SourceReferences</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="strictBinIncludes">strictBinIncludes</a>:</b></p>
        
<div>If set to <tt>true</tt> (the default), missing build.properties
bin.includes will cause build failure. If set to
<tt>false</tt>, missing build.properties bin.includes will be
reported as warnings but the build will not fail.</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="useDefaultExcludes">useDefaultExcludes</a>:</b></p>
        
<div>(no description)</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>
      </div>
    </div>
  

                  </div>
            </div>
          </div>

    <hr/>

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

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