<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2014-07-14
 | 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="20140714" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho p2 Metadata Plugin (Incubation) - 
    tycho-p2:p2-metadata</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 Metadata 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: 2014-07-14</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 0.21.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>
            </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>tycho-p2:p2-metadata<a name="tycho-p2:p2-metadata"></a></h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-p2-plugin:0.21.0:p2-metadata</p>
      
<p><b>Description</b>:</p>
      
<div>Copyright (c) 2008, 2013 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</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
      </ul>
      
<div class="section">
<h3>Optional Parameters<a name="Optional_Parameters"></a></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="#attachP2Metadata">attachP2Metadata</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>
          
<tr class="a">
            
<td><b><a href="#baselineMode">baselineMode</a></b></td>
            
<td><tt>BaselineMode</tt></td>
            
<td><tt>-</tt></td>
            
<td>What happens when build artifact does not match baseline version.<br /><b>Default value is</b>: <tt>warn</tt>.<br /><b>User property is</b>: <tt>tycho.baseline</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#baselineReplace">baselineReplace</a></b></td>
            
<td><tt>BaselineReplace</tt></td>
            
<td><tt>-</tt></td>
            
<td>Whether to replace build artifacts with baseline version or use
reactor version.<br /><b>Default value is</b>: <tt>all</tt>.<br /><b>User property is</b>: <tt>tycho.baseline.replace</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#baselineRepositories">baselineRepositories</a></b></td>
            
<td><tt>List</tt></td>
            
<td><tt>-</tt></td>
            
<td>Baseline build repository(ies). P2 assumes that the same artifact
type, id and version represent the same artifact. If
baselineRepositories parameter is specified, this assumption is
validated and optionally enforced.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#project">project</a></b></td>
            
<td><tt>MavenProject</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /><b>User property is</b>: <tt>project</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#supportedProjectTypes">supportedProjectTypes</a></b></td>
            
<td><tt>List</tt></td>
            
<td><tt>-</tt></td>
            
<td>Project types which this plugin supports.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3>Parameter Details<a name="Parameter_Details"></a></h3>
        
<p><b><a name="attachP2Metadata">attachP2Metadata</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><hr />
<p><b><a name="baselineMode">baselineMode</a>:</b></p>
        
<div>What happens when build artifact does not match baseline version.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.plugins.p2.BaselineMode</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>tycho.baseline</tt></li>
          
<li><b>Default</b>: <tt>warn</tt></li>
        </ul><hr />
<p><b><a name="baselineReplace">baselineReplace</a>:</b></p>
        
<div>Whether to replace build artifacts with baseline version or use
reactor version.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.plugins.p2.BaselineReplace</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>tycho.baseline.replace</tt></li>
          
<li><b>Default</b>: <tt>all</tt></li>
        </ul><hr />
<p><b><a name="baselineRepositories">baselineRepositories</a>:</b></p>
        
<div>Baseline build repository(ies). P2 assumes that the same artifact
type, id and version represent the same artifact. If
baselineRepositories parameter is specified, this assumption is
validated and optionally enforced.</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="project">project</a>:</b></p>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.maven.project.MavenProject</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>project</tt></li>
        </ul><hr />
<p><b><a name="supportedProjectTypes">supportedProjectTypes</a>:</b></p>
        
<div>Project types which this plugin supports.</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-2014
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

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