<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.1 from target/generated-site/xdoc/update-site-packaging-mojo.xml at 2019-11-14
 | Rendered using Apache Maven Fluido Skin 1.8
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.1" />
    <title>Tycho OSGi Packaging Plugin &#x2013; tycho-packaging:update-site-packaging</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.8.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script src="./js/apache-maven-fluido-1.8.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <header>
        <div id="banner">
          <div class="pull-left"><div id="bannerLeft"><h2>Tycho OSGi Packaging 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: 2019-11-14<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.5.1-SNAPSHOT</li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
   <li class="nav-header">Tycho</li>
    <li><a href="../index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../tycho-compiler-plugin/plugin-info.html" title="Compiler Plugin"><span class="none"></span>Compiler Plugin</a></li>
    <li><a href="../tycho-packaging-plugin/plugin-info.html" title="Packaging Plugin"><span class="none"></span>Packaging Plugin</a></li>
    <li><a href="../BuildProperties.html" title="Build Properties"><span class="none"></span>Build Properties</a></li>
    <li><a href="../tycho-surefire-plugin/plugin-info.html" title="Surefire Plugin"><span class="none"></span>Surefire Plugin</a></li>
    <li><a href="../tycho-p2/tycho-p2-publisher-plugin/plugin-info.html" title="p2 Publisher Plugin"><span class="none"></span>p2 Publisher Plugin</a></li>
    <li><a href="../tycho-p2/tycho-p2-repository-plugin/plugin-info.html" title="p2 Repository Plugin"><span class="none"></span>p2 Repository Plugin</a></li>
    <li><a href="../tycho-p2/tycho-p2-director-plugin/plugin-info.html" title="p2 Director Plugin"><span class="none"></span>p2 Director Plugin</a></li>
    <li><a href="../tycho-source-plugin/plugin-info.html" title="Source Plugin"><span class="none"></span>Source Plugin</a></li>
    <li><a href="../tycho-release/tycho-versions-plugin/plugin-info.html" title="Versions Plugin"><span class="none"></span>Versions Plugin</a></li>
    <li><a href="../tycho-pomgenerator-plugin/plugin-info.html" title="POM Generator Plugin"><span class="none"></span>POM Generator Plugin</a></li>
    <li><a href="../TychoProperties.html" title="Tycho Properties"><span class="none"></span>Tycho Properties</a></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <hr />
            <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>
        </header>
        <main id="bodyColumn"  class="span10" >

  
    <section>
<h2><a name="tycho-packaging:update-site-packaging"></a>tycho-packaging:update-site-packaging</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-packaging-plugin:1.5.1-SNAPSHOT:update-site-packaging</p>
      
<p><b>Description</b>:</p>
      
<div>(no description)</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
      </ul>
      <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><a href="#archiveSite">&lt;archiveSite&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>If true, create site assembly zip file. If false (the default), do
not create site assembly zip file. Please note that the project's
main artifact that will be deployed/installed to maven repository
is a zip only containing the site.xml. However, if this parameter
is set to true an additional result file classified as 'assembly'
containing a full packaged update site will be created and
installed.<br /><b>Default value is</b>: false.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#target">&lt;target&gt;</a></td>
            
<td>File</td>
            
<td>-</td>
            
<td>Generated update site location (must match update-site mojo
configuration)<br /><b>Default value is</b>: ${project.build.directory}/site.<br /></td>
          </tr>
        </table>
      </section>
      <section>
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        <section>
<h4><a name="a.3CarchiveSite.3E"></a><b><a name="archiveSite">&lt;archiveSite&gt;</a></b></h4>
        
<div>If true, create site assembly zip file. If false (the default), do
not create site assembly zip file. Please note that the project's
main artifact that will be deployed/installed to maven repository
is a zip only containing the site.xml. However, if this parameter
is set to true an additional result file classified as 'assembly'
containing a full packaged update site will be created and
installed.</div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: false</li>
        </ul><hr /></section><section>
<h4><a name="a.3Ctarget.3E"></a><b><a name="target">&lt;target&gt;</a></b></h4>
        
<div>Generated update site location (must match update-site mojo
configuration)</div>
        
<ul>
          
<li><b>Type</b>: java.io.File</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: ${project.build.directory}/site</li>
        </ul>
      </section></section>
    </section>
  

        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &#169;      2008&#x2013;2019<a href="http://www.eclipse.org/">Eclipse Foundation</a>.
.</p>
        </div>
      </div>
    </footer>
  </body>
</html>
