<!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:materialize-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:materialize-products"></a>tycho-p2-director:materialize-products</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-p2-director-plugin:1.2.0:materialize-products</p>
      
<p><b>Description</b>:</p>
      
<div>
<p>Creates product installations for the products defined in the
project.</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="#directorRuntime">directorRuntime</a></b></td>
            
<td><tt>DirectorMojo$DirectorRuntimeType</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>Runtime in which the director application is executed. Can
be</p>

<ul>

<li><tt>internal</tt> - to use the director application from
Tycho's embedded OSGi runtime (default)</li>

<li><tt>standalone</tt> - to create and use a stand-alone
installation of the director application. This option is needed if
the product to be installed includes artifacts with
meta-requirements (e.g. to a non-standard touchpoint action).
Requires that the <tt>source</tt> parameter is set to
<tt>repository</tt>.</li>
</ul><br /><b>Default value is</b>: <tt>internal</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<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="b">
            
<td><b><a href="#installFeatures">installFeatures</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>Include the feature JARs in installation. (Technically, this
sets the property <tt>org.eclipse.update.install.features</tt> to
<tt>true</tt> in the p2 profile.)</p><br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<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>
          
<tr class="b">
            
<td><b><a href="#profile">profile</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>The name of the p2 profile to be created.</p><br /><b>Default value is</b>: <tt>DefaultProfile</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#profileNames">profileNames</a></b></td>
            
<td><tt>List</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#source">source</a></b></td>
            
<td><tt>DirectorMojo$InstallationSource</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>Source repositories to be used in the director calls. Can be</p>

<ul>

<li><tt>targetPlatform</tt> - to use the target platform as
source (default)</li>

<li><tt>repository</tt> - to use the p2 repository in
<tt>target/repository/</tt> as source. With this option, the build
implicitly verifies that it would also be possible to install the
product from that repository with an external director
application.</li>
</ul><br /><b>Default value is</b>: <tt>targetPlatform</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="directorRuntime">directorRuntime</a>:</b></p>
        
<div>
<p>Runtime in which the director application is executed. Can
be</p>

<ul>

<li><tt>internal</tt> - to use the director application from
Tycho's embedded OSGi runtime (default)</li>

<li><tt>standalone</tt> - to create and use a stand-alone
installation of the director application. This option is needed if
the product to be installed includes artifacts with
meta-requirements (e.g. to a non-standard touchpoint action).
Requires that the <tt>source</tt> parameter is set to
<tt>repository</tt>.</li>
</ul></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.plugins.p2.director.DirectorMojo$DirectorRuntimeType</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>internal</tt></li>
        </ul><hr />
<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="installFeatures">installFeatures</a>:</b></p>
        
<div>
<p>Include the feature JARs in installation. (Technically, this
sets the property <tt>org.eclipse.update.install.features</tt> to
<tt>true</tt> in the p2 profile.)</p></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="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><hr />
<p><b><a name="profile">profile</a>:</b></p>
        
<div>
<p>The name of the p2 profile to be created.</p></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>DefaultProfile</tt></li>
        </ul><hr />
<p><b><a name="profileNames">profileNames</a>:</b></p>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.List</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="source">source</a>:</b></p>
        
<div>
<p>Source repositories to be used in the director calls. Can be</p>

<ul>

<li><tt>targetPlatform</tt> - to use the target platform as
source (default)</li>

<li><tt>repository</tt> - to use the p2 repository in
<tt>target/repository/</tt> as source. With this option, the build
implicitly verifies that it would also be possible to install the
product from that repository with an external director
application.</li>
</ul></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.plugins.p2.director.DirectorMojo$InstallationSource</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>targetPlatform</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>
