<!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 p2 Director Plugin &#x2013; tycho-p2-director:archive-products</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 p2 Director 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-p2-director:archive-products"></a>tycho-p2-director:archive-products</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-p2-director-plugin:1.2.0:archive-products</p>
      
<p><b>Description</b>:</p>
      
<div>
<p>Creates archives with the product installations.</p></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="#forkedProcessTimeoutInSeconds">forkedProcessTimeoutInSeconds</a></b></td>
            
<td><tt>int</tt></td>
            
<td><tt>-</tt></td>
            
<td>Kill the forked process after a certain number of seconds. If set
to 0, wait forever for the process, never timing out.<br /><b>Default value is</b>: <tt>0</tt>.<br /><b>User property is</b>: <tt>p2.timeout</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#formats">formats</a></b></td>
            
<td><tt>Map</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>Maps os to format. By default a zip file will be created. For
example, the following configuration will create tar.gz product
archives for Linux</p>

<div>
<pre>
&lt;formats&gt;
  &lt;linux&gt;tar.gz&lt;/linux&gt;
&lt;/formats&gt;
</pre></div>

Supported formats 

<ul>

<li>zip</li>

<li>tar.gz</li>
</ul>
<br />
<br /><br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#products">products</a></b></td>
            
<td><tt>List</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>Selection of products to be installed and configuration per
product.</p>

<p>If the project contains more than one product file, you need to
choose for which ones you want to create distribution archives. If
you choose to install more than one product, you need to specify
the <tt>attachId</tt> (which becomes a part of the classifier) to
make the classifiers unique. Example:</p>

<div>
<pre>
&lt;plugin&gt;
  &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
  &lt;artifactId&gt;tycho-p2-director-plugin&lt;/artifactId&gt;
  &lt;version&gt;${tycho-version}&lt;/version&gt;
  &lt;executions&gt;
    &lt;execution&gt;
      &lt;id&gt;create-distributions&lt;/id&gt;
      &lt;goals&gt;
        &lt;goal&gt;materialize-products&lt;/goal&gt;
        &lt;goal&gt;archive-products&lt;/goal&gt;
      &lt;/goals&gt;
    &lt;/execution&gt;
  &lt;/executions&gt;
  &lt;configuration&gt;
    &lt;products&gt;
      &lt;product&gt;
        &lt;!-- select product with ID product.id; the archives get the classifiers &quot;&lt;os&gt;.&lt;ws&gt;.&lt;arch&gt;&quot; --&gt;
        &lt;id&gt;product.id&lt;/id&gt;
      &lt;/product&gt;
      &lt;product&gt;
        &lt;!-- select product with ID other.product.id for the classifiers &quot;other-&lt;os&gt;.&lt;ws&gt;.&lt;arch&gt;&quot; --&gt;
        &lt;id&gt;other.product.id&lt;/id&gt;
        &lt;attachId&gt;other&lt;/attachId&gt;
      &lt;/product&gt;
    &lt;/products&gt;
  &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div>

The following snippet shows the optional parameters which can be
specified per product: 

<div>
<pre>
  &lt;configuration&gt;
    &lt;products&gt;
      &lt;product&gt;
        &lt;id&gt;product.id&lt;/id&gt;
        &lt;!-- optional parameters --&gt;
        &lt;rootFolder&gt;&lt;/rootFolder&gt;
        &lt;rootFolders&gt;
          &lt;macosx&gt;&lt;/macosx&gt;
          &lt;linux&gt;&lt;/linux&gt;
          &lt;win32&gt;&lt;/win32&gt;
        &lt;/rootFolders&gt;
      &lt;/product&gt;
      ...
    &lt;/products&gt;
  &lt;/configuration&gt;
</pre></div>

Details on the product-specific configuration parameters: 

<ul>

<li><tt>rootFolder</tt> - The path where the installed product
shall be stored in the archive, e.g. &quot;eclipse&quot;. By default, the
product is stored in the archive root.</li>

<li><tt>rootFolders</tt> - OS-specific installation root folders,
overriding <tt>rootFolder</tt>. Allowed children are
<tt>&lt;macosx&gt;</tt>, <tt>&lt;win32&gt;</tt> and
<tt>&lt;linux&gt;</tt> or any other OS supported by p2. Since
0.18.0</li>
</ul><br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="forkedProcessTimeoutInSeconds">forkedProcessTimeoutInSeconds</a>:</b></p>
        
<div>Kill the forked process after a certain number of seconds. If set
to 0, wait forever for the process, never timing out.</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>p2.timeout</tt></li>
          
<li><b>Default</b>: <tt>0</tt></li>
        </ul><hr />
<p><b><a name="formats">formats</a>:</b></p>
        
<div>
<p>Maps os to format. By default a zip file will be created. For
example, the following configuration will create tar.gz product
archives for Linux</p>

<div>
<pre>
&lt;formats&gt;
  &lt;linux&gt;tar.gz&lt;/linux&gt;
&lt;/formats&gt;
</pre></div>

Supported formats 

<ul>

<li>zip</li>

<li>tar.gz</li>
</ul>
<br />
<br /></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Map</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="products">products</a>:</b></p>
        
<div>
<p>Selection of products to be installed and configuration per
product.</p>

<p>If the project contains more than one product file, you need to
choose for which ones you want to create distribution archives. If
you choose to install more than one product, you need to specify
the <tt>attachId</tt> (which becomes a part of the classifier) to
make the classifiers unique. Example:</p>

<div>
<pre>
&lt;plugin&gt;
  &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
  &lt;artifactId&gt;tycho-p2-director-plugin&lt;/artifactId&gt;
  &lt;version&gt;${tycho-version}&lt;/version&gt;
  &lt;executions&gt;
    &lt;execution&gt;
      &lt;id&gt;create-distributions&lt;/id&gt;
      &lt;goals&gt;
        &lt;goal&gt;materialize-products&lt;/goal&gt;
        &lt;goal&gt;archive-products&lt;/goal&gt;
      &lt;/goals&gt;
    &lt;/execution&gt;
  &lt;/executions&gt;
  &lt;configuration&gt;
    &lt;products&gt;
      &lt;product&gt;
        &lt;!-- select product with ID product.id; the archives get the classifiers &quot;&lt;os&gt;.&lt;ws&gt;.&lt;arch&gt;&quot; --&gt;
        &lt;id&gt;product.id&lt;/id&gt;
      &lt;/product&gt;
      &lt;product&gt;
        &lt;!-- select product with ID other.product.id for the classifiers &quot;other-&lt;os&gt;.&lt;ws&gt;.&lt;arch&gt;&quot; --&gt;
        &lt;id&gt;other.product.id&lt;/id&gt;
        &lt;attachId&gt;other&lt;/attachId&gt;
      &lt;/product&gt;
    &lt;/products&gt;
  &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div>

The following snippet shows the optional parameters which can be
specified per product: 

<div>
<pre>
  &lt;configuration&gt;
    &lt;products&gt;
      &lt;product&gt;
        &lt;id&gt;product.id&lt;/id&gt;
        &lt;!-- optional parameters --&gt;
        &lt;rootFolder&gt;&lt;/rootFolder&gt;
        &lt;rootFolders&gt;
          &lt;macosx&gt;&lt;/macosx&gt;
          &lt;linux&gt;&lt;/linux&gt;
          &lt;win32&gt;&lt;/win32&gt;
        &lt;/rootFolders&gt;
      &lt;/product&gt;
      ...
    &lt;/products&gt;
  &lt;/configuration&gt;
</pre></div>

Details on the product-specific configuration parameters: 

<ul>

<li><tt>rootFolder</tt> - The path where the installed product
shall be stored in the archive, e.g. &quot;eclipse&quot;. By default, the
product is stored in the archive root.</li>

<li><tt>rootFolders</tt> - OS-specific installation root folders,
overriding <tt>rootFolder</tt>. Allowed children are
<tt>&lt;macosx&gt;</tt>, <tt>&lt;win32&gt;</tt> and
<tt>&lt;linux&gt;</tt> or any other OS supported by p2. Since
0.18.0</li>
</ul></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.List</tt></li>
          
<li><b>Required</b>: <tt>No</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>
