<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-12-17
 | 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="20181217" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho p2 Repository Plugin &#x2013; tycho-p2-repository:archive-repository</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 Repository 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-12-17</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.3.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-repository:archive-repository"></a>tycho-p2-repository:archive-repository</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-p2-repository-plugin:1.3.0:archive-repository</p>
      
<p><b>Description</b>:</p>
      
<div>
<p>Creates a zip archive with the aggregated p2 repository.</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><tt><a href="#finalName">&lt;finalName&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>Name of the generated zip file (without extension).</p><br /><b>User property is</b>: <tt>project.build.finalName</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#skipArchive">&lt;skipArchive&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Whether or not to skip archiving the repository. False by default.<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<div class="section">
<h4><a name="afinalName"></a><b><a name="finalName">&lt;finalName&gt;</a></b></h4>
        
<div>
<p>Name of the generated zip file (without extension).</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>project.build.finalName</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="askipArchive"></a><b><a name="skipArchive">&lt;skipArchive&gt;</a></b></h4>
        
<div>Whether or not to skip archiving the repository. False by default.</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>
      </div></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>
