<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-06-08
 | 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="20150608" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Pack200 Pack 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>Pack200 Pack 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-06-08</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 0.23.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-document-bundle-plugin/plugin-info.html" title="Document Bundle Plugin">
          <i class="none"></i>
        Document Bundle 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>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="pack-mojo.html">tycho-pack200b:pack</a></td>
<td>Performs pack200 pack.</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.extras&lt;/groupId&gt;
          &lt;artifactId&gt;tycho-pack200b-plugin&lt;/artifactId&gt;
          &lt;version&gt;0.23.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.extras&lt;/groupId&gt;
        &lt;artifactId&gt;tycho-pack200b-plugin&lt;/artifactId&gt;
        &lt;version&gt;0.23.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;                    2010-2015
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

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