<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at Mar 15, 2013
 | 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="20130315" />
    <meta http-equiv="Content-Language" content="en" />
    <title>
    tycho-p2-extras:publish-features-and-bundles</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>p2 Extras 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: 2013-03-15</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 0.17.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 Extras</li>
                                
      <li>
    
                          <a href="../index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2-extras-plugin/plugin-info.html" title="P2 Extras Plugin">
          <i class="none"></i>
        P2 Extras Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../target-platform-validation-plugin/plugin-info.html" title="Target Platform Validation Plugin">
          <i class="none"></i>
        Target Platform Validation Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-eclipserun-plugin/plugin-info.html" title="Eclipserun Plugin">
          <i class="none"></i>
        Eclipserun Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-source-feature-plugin/plugin-info.html" title="Source Feature Generation Plugin">
          <i class="none"></i>
        Source Feature Generation Plugin</a>
            </li>
                                                                                
      <li>
    
                          <a href="../tycho-pack200/index.html" title="Pack200 Plugins">
          <i class="icon-chevron-down"></i>
        Pack200 Plugins</a>
                    <ul class="nav nav-list">
                      
      <li>
    
                          <a href="../tycho-pack200/tycho-pack200a-plugin/plugin-info.html" title="Normalization Plugin">
          <i class="none"></i>
        Normalization Plugin</a>
            </li>
                      
      <li>
    
                          <a href="../tycho-pack200/tycho-pack200b-plugin/plugin-info.html" title="Pack Plugin">
          <i class="none"></i>
        Pack Plugin</a>
            </li>
              </ul>
        </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-extras:publish-features-and-bundles<a name="tycho-p2-extras:publish-features-and-bundles"></a></h2>
      <p><b>Full name</b>:</p>
      <p>org.eclipse.tycho.extras:tycho-p2-extras-plugin:0.17.0:publish-features-and-bundles</p>
      <p><b>Description</b>:</p>
      <div>This goal invokes the feature and bundle publisher on a folder.</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="#additionalArgs">additionalArgs</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Optional line of additional arguments passed to the p2 application
launcher.<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#append">append</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Optional flag to append artifacts to an existing repository<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#artifactRepositoryLocation">artifactRepositoryLocation</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Location of the artifact repository to write. Note: The
AssembleRepositoryMojo of tycho-p2-repository-plugin will only work
with the predefined default ${project.build.directory}/repository.<br /><b>Default value is</b>: <tt>${project.build.directory}/repository</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#compress">compress</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Create compressed jars rather than plain xml<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </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>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#metadataRepositoryLocation">metadataRepositoryLocation</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Location of the metadata repository to write. The
AssembleRepositoryMojo of tycho-p2-repository-plugin will only work
with the predefined default ${project.build.directory}/repository.<br /><b>Default value is</b>: <tt>${project.build.directory}/repository</tt>.</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 /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#publishArtifacts">publishArtifacts</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Publish artifacts to repository<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#reusePack200Files">reusePack200Files</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Optional flag to include .pack.gz files<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#sourceLocation">sourceLocation</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Location with features and/or plugins directories on which the
features and bundles publisher shall be called.<br /><b>Default value is</b>: <tt>${project.build.directory}/source</tt>.</td>
          </tr>
        </table>
      </div>
      <div class="section"><h3>Parameter Details<a name="Parameter_Details"></a></h3>
        <p><b><a name="additionalArgs">additionalArgs</a>:</b></p>
        <div>Optional line of additional arguments passed to the p2 application
launcher.</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="append">append</a>:</b></p>
        <div>Optional flag to append artifacts to an existing repository</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="artifactRepositoryLocation">artifactRepositoryLocation</a>:</b></p>
        <div>Location of the artifact repository to write. Note: The
AssembleRepositoryMojo of tycho-p2-repository-plugin will only work
with the predefined default ${project.build.directory}/repository.</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>${project.build.directory}/repository</tt></li>
        </ul><hr /><p><b><a name="compress">compress</a>:</b></p>
        <div>Create compressed jars rather than plain xml</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="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>Expression</b>: <tt>${p2.timeout}</tt></li>
          <li><b>Default</b>: <tt>0</tt></li>
        </ul><hr /><p><b><a name="metadataRepositoryLocation">metadataRepositoryLocation</a>:</b></p>
        <div>Location of the metadata repository to write. The
AssembleRepositoryMojo of tycho-p2-repository-plugin will only work
with the predefined default ${project.build.directory}/repository.</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>${project.build.directory}/repository</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>Expression</b>: <tt>${project}</tt></li>
        </ul><hr /><p><b><a name="publishArtifacts">publishArtifacts</a>:</b></p>
        <div>Publish artifacts to repository</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="reusePack200Files">reusePack200Files</a>:</b></p>
        <div>Optional flag to include .pack.gz files</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="sourceLocation">sourceLocation</a>:</b></p>
        <div>Location with features and/or plugins directories on which the
features and bundles publisher shall be called.</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>${project.build.directory}/source</tt></li>
        </ul>
      </div>
    </div>
  

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

    <hr/>

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

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