<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-10-30
 | 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="20151030" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho OSGi Packaging Plugin (Incubation) - Plugin Documentation</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 (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: 2015-10-30</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 0.24.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</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>Plugin Documentation<a name="Plugin_Documentation"></a></h2><a name="Plugin_Documentation"></a>
<p>Goals available for this plugin:</p>
<table border="0" class="table table-striped">
<tr class="a">
<th>Goal</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="build-qualifier-mojo.html">tycho-packaging:build-qualifier</a></td>
<td><p>This mojo generates the build qualifier according to the <a
href="http://help.eclipse.org/kepler/topic/org.eclipse.pde.doc.user/tasks/pde_version_qualifiers.htm">rules
described in the PDE documentation</a>:</p>
<ol>
<li>Explicit -DforceContextQualifier command line parameter</li>
<li>forceContextQualifier from
${project.baseDir}/build.properties</li>
<li>A time stamp in the form YYYYMMDDHHMM (e.g. 200605121600)</li>
</ol>
<br />
<br />
 
<p>The generated qualifier is assigned to
<code>buildQualifier</code> project property. The unqualified
project version is assigned to <code>unqualifiedVersion</code>
project property. The unqualified version is calculated based on
<code>${project.version}</code> and can be used for any Tycho
project and regular Maven project. Different projects can use
different formats to expand the timestamp (not recommended). The
concatenation of <code>${unqualifiedVersion}</code> and
<code>${buildQualifier}</code>, if not empty, is assigned to the
project property <code>qualifiedVersion</code>.</p>
<p>The timestamp generation logic is extensible. The primary use
case is to generate build version qualifier based on the timestamp
of the last project commit. Here is example pom.xml snippet that
enables custom timestamp generation logic</p>
<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;dependencies&gt;
     &lt;dependency&gt;
       &lt;groupId&gt;timestamp-provider-groupid&lt;/groupId&gt;
       &lt;artifactId&gt;timestamp-provider-artifactid&lt;/artifactId&gt;
       &lt;version&gt;timestamp-provider-version&lt;/version&gt;
     &lt;/dependency&gt;
   &lt;/dependencies&gt;
   &lt;configuration&gt;
     &lt;timestampProvider&gt;custom&lt;/timestampProvider&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
...

</pre></td></tr>
<tr class="a">
<td><a href="build-qualifier-aggregator-mojo.html">tycho-packaging:build-qualifier-aggregator</a></td>
<td><p>This mojo calculates build timestamp as the latest timestamp of
the project itself and timestamps of bundles and features directly
included in the project. This is meant to work with custom
timestamp providers and generate build qualifier based on build
contents, i.e. the source code, and not the time the build was
started; rebuilding the same source code will result in the same
version qualifier.</p>
<p>Timestamp of included bundles and features is determined by
parsing their respective version qualifiers. Qualifiers that cannot
be parsed are silently ignored, which can result in old version
qualifier used even when aggregator project contents actually
changed. In this case aggregator project timestamp will have to be
increased manually, using artificial SCM commit for example.</p>
<p>Qualifier aggregation is enabled only for projects with custom
timestamp provider, i.e. &lt;timestampProvider&gt; is set in
pom.xml to a value other than "default". The default build
timestamp provider uses build start time as build timestamp, which
should be newer or equal than timestamp of any included
bundle/feature project, which makes qualifier aggregation
redundant.</p></td></tr>
<tr class="b">
<td><a href="package-feature-mojo.html">tycho-packaging:package-feature</a></td>
<td>Copyright (c) 2008, 2014 Sonatype Inc. and others. All rights
reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which
accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html Contributors: Sonatype
Inc. - initial API and implementation</td></tr>
<tr class="a">
<td><a href="package-iu-mojo.html">tycho-packaging:package-iu</a></td>
<td>Creates the zip for the IU and attaches it as an artifact</td></tr>
<tr class="b">
<td><a href="package-plugin-mojo.html">tycho-packaging:package-plugin</a></td>
<td>Creates a jar-based plugin and attaches it as an artifact</td></tr>
<tr class="a">
<td><a href="package-target-definition-mojo.html">tycho-packaging:package-target-definition</a></td>
<td>Registers the target definition file &lt;artifactId&gt;.target
expected in the basedir of a project as maven artifact.</td></tr>
<tr class="b">
<td><a href="product-export-mojo.html">tycho-packaging:product-export</a></td>
<td>Copyright (c) 2008, 2012 Sonatype Inc. and others. All rights
reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which
accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html Contributors: Sonatype
Inc. - initial API and implementation</td></tr>
<tr class="a">
<td><a href="update-site-mojo.html">tycho-packaging:update-site</a></td>
<td>Copyright (c) 2008, 2011 Sonatype Inc. and others. All rights
reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which
accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html Contributors: Sonatype
Inc. - initial API and implementation</td></tr>
<tr class="b">
<td><a href="update-site-packaging-mojo.html">tycho-packaging:update-site-packaging</a></td>
<td>Copyright (c) 2010, 2011 SAP AG and others. All rights reserved.
This program and the accompanying materials are made available
under the terms of the Eclipse Public License v1.0 which
accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html Contributors: SAP AG -
initial API and implementation</td></tr>
<tr class="a">
<td><a href="validate-id-mojo.html">tycho-packaging:validate-id</a></td>
<td>Validates that project Maven and OSGi ids match.</td></tr>
<tr class="b">
<td><a href="validate-version-mojo.html">tycho-packaging:validate-version</a></td>
<td>Validates project Maven and OSGi versions. For SNAPSHOT versions,
OSGi version qualifier must be ".qualifier" and unqualified Maven
and OSGi versions must be equal. For RELEASE versions, OSGi and
Maven versions must be equal.</td></tr></table>
<div class="section">
<h3>System Requirements<a name="System_Requirements"></a></h3><a name="System_Requirements"></a>
<p>The following specifies the minimum requirements to run this Maven plugin:</p>
<table border="0" class="table table-striped">
<tr class="a">
<td>Maven</td>
<td>3.0</td></tr>
<tr class="b">
<td>JDK</td>
<td>1.7</td></tr>
<tr class="a">
<td>Memory</td>
<td>No minimum requirement.</td></tr>
<tr class="b">
<td>Disk Space</td>
<td>No minimum requirement.</td></tr></table></div>
<div class="section">
<h3>Usage<a name="Usage"></a></h3><a name="Usage"></a>
<p>You should specify the version in your project's plugin configuration:</p>
<div class="source">
<pre>&lt;project&gt;
  ...
  &lt;build&gt;
    &lt;!-- To define the plugin version in your parent POM --&gt;
    &lt;pluginManagement&gt;
      &lt;plugins&gt;
        &lt;plugin&gt;
          &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
          &lt;artifactId&gt;tycho-packaging-plugin&lt;/artifactId&gt;
          &lt;version&gt;0.24.0&lt;/version&gt;
        &lt;/plugin&gt;
        ...
      &lt;/plugins&gt;
    &lt;/pluginManagement&gt;
    &lt;!-- To use the plugin goals in your POM or parent POM --&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
        &lt;artifactId&gt;tycho-packaging-plugin&lt;/artifactId&gt;
        &lt;version&gt;0.24.0&lt;/version&gt;
      &lt;/plugin&gt;
      ...
    &lt;/plugins&gt;
  &lt;/build&gt;
  ...
&lt;/project&gt;
</pre></div>
<p>For more information, see <a class="externalLink" href="http://maven.apache.org/guides/mini/guide-configuring-plugins.html">&quot;Guide to Configuring Plug-ins&quot;</a></p></div></div>
                  </div>
            </div>
          </div>

    <hr/>

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

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