<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.1 from target/generated-site/xdoc/mirror-mojo.xml at 2020-04-06
 | 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 p2 Extras Plugin &#x2013; tycho-p2-extras:mirror</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 p2 Extras 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: 2020-04-06<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.0</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="../../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="" title="Properties"><span class="icon-chevron-down"></span>Properties</a>
     <ul class="nav nav-list">
      <li><a href="../../BuildProperties.html" title="Build Properties"><span class="none"></span>Build Properties</a></li>
      <li><a href="../../TychoProperties.html" title="Tycho Properties"><span class="none"></span>Tycho Properties</a></li>
     </ul></li>
   <li class="nav-header">Tycho Extras</li>
    <li><a href="../../tycho-extras/index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../../tycho-extras/tycho-p2-extras-plugin/plugin-info.html" title="P2 Extras Plugin"><span class="none"></span>P2 Extras Plugin</a></li>
    <li><a href="../../tycho-extras/target-platform-validation-plugin/plugin-info.html" title="Target Platform Validation Plugin"><span class="none"></span>Target Platform Validation Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-eclipserun-plugin/plugin-info.html" title="Eclipserun Plugin"><span class="none"></span>Eclipserun Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-document-bundle-plugin/plugin-info.html" title="Document Bundle Plugin"><span class="none"></span>Document Bundle Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-source-feature-plugin/plugin-info.html" title="Source Feature Generation Plugin"><span class="none"></span>Source Feature Generation Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-pack200/index.html" title="Pack200 Plugins"><span class="icon-chevron-down"></span>Pack200 Plugins</a>
     <ul class="nav nav-list">
      <li><a href="../../tycho-extras/tycho-pack200/tycho-pack200a-plugin/plugin-info.html" title="Normalization Plugin"><span class="none"></span>Normalization Plugin</a></li>
      <li><a href="../../tycho-extras/tycho-pack200/tycho-pack200b-plugin/plugin-info.html" title="Pack Plugin"><span class="none"></span>Pack Plugin</a></li>
     </ul></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-p2-extras:mirror"></a>tycho-p2-extras:mirror</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho.extras:tycho-p2-extras-plugin:1.7.0:mirror</p>
      
<p><b>Description</b>:</p>
      
<div>Maven plugin front-end for
org.eclipse.equinox.p2.internal.repository.tools.MirrorApplication.
Intended as a replacement for the <a class="externalLink" href="http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_repositorytasks.htm">p2.mirror
ant task</a>.</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="#append">&lt;append&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Whether to append to an existing destination repository. Note that
appending an IU which already exists in the destination repository
will cause the mirror operation to fail.<br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#compress">&lt;compress&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Whether to compress the destination repository metadata files
(artifacts.xml, content.xml).<br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#currentModuleAsSource">&lt;currentModuleAsSource&gt;</a></td>
            
<td>boolean</td>
            
<td>1.1.0</td>
            
<td>
<p>Whether the current build p2 output should be added as source.
Ignored for non-Tycho packaging types. Ignored if
targetPlatformAsSource == false;</p><br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#destination">&lt;destination&gt;</a></td>
            
<td>File</td>
            
<td>-</td>
            
<td>The destination directory to mirror to.<br /><b>Default value is</b>: ${project.build.directory}/repository.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#filter">&lt;filter&gt;</a></td>
            
<td>Map</td>
            
<td>-</td>
            
<td>Filter properties. In particular, a platform filter can be
specified by using keys osgi.os, osgi.ws, osgi.arch.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#followOnlyFilteredRequirements">&lt;followOnlyFilteredRequirements&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Follow only requirements which match the filter specified.<br /><b>Default value is</b>: false.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#followStrictOnly">&lt;followStrictOnly&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Set to true if only strict dependencies should be followed. A
strict dependency is defined by a version range only including
exactly one version (e.g. [1.0.0.v2009, 1.0.0.v2009]). In
particular, plugins/features included in a feature are normally
required via a strict dependency from the feature to the included
plugin/feature.<br /><b>Default value is</b>: false.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#ignoreErrors">&lt;ignoreErrors&gt;</a></td>
            
<td>boolean</td>
            
<td>1.1.0</td>
            
<td>
<p>If set to true, mirroring continues to run in the event of an
error during the mirroring process and will just log an info
message.</p><br /><b>Default value is</b>: false.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#includeFeatures">&lt;includeFeatures&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Whether or not to include features.<br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#includeNonGreedy">&lt;includeNonGreedy&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Whether or not to follow non-greedy requirements.<br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#includeOptional">&lt;includeOptional&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Whether or not to follow optional requirements.<br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#includePacked">&lt;includePacked&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Whether or not to include pack200 artifacts.<br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#ius">&lt;ius&gt;</a></td>
            
<td>List</td>
            
<td>-</td>
            
<td>(Optional) Which IUs to mirror. If omitted, all IUs available in
the source repositories will be mirrored. An IU must specify an id
and may specify a version. If version is omitted, the latest
available version will be queried. By default, IUs required by the
specified IUs will also be mirrored. See also
followStrictOnly,
followOnlyFilteredRequirements ,
includeOptional, includeNonGreedy,
includeFeatures.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#keepNonXzIndexFiles">&lt;keepNonXzIndexFiles&gt;</a></td>
            
<td>boolean</td>
            
<td>0.25.0</td>
            
<td>
<p>If xzCompress is true, whether jar or
xml index files should be kept in addition to XZ-compressed index
files. This fallback provides backwards compatibility for pre-Mars
p2 clients which cannot read XZ-compressed index files.</p><br /><b>Default value is</b>: true.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#latestVersionOnly">&lt;latestVersionOnly&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Set to true to filter the resulting set of IUs to only
include the latest version of each Installable Unit only. By
default, all versions satisfying dependencies are included.<br /><b>Default value is</b>: false.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#mirrorMetadataOnly">&lt;mirrorMetadataOnly&gt;</a></td>
            
<td>boolean</td>
            
<td>-</td>
            
<td>Whether to mirror metadata only (no artifacts).<br /><b>Default value is</b>: false.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#name">&lt;name&gt;</a></td>
            
<td>String</td>
            
<td>-</td>
            
<td>The target repository name.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#source">&lt;source&gt;</a></td>
            
<td>List</td>
            
<td>-</td>
            
<td>Source repositori(es) to mirror from.<br /></td>
          </tr>
          
<tr class="b">
            
<td><a href="#targetPlatformAsSource">&lt;targetPlatformAsSource&gt;</a></td>
            
<td>boolean</td>
            
<td>1.1.0</td>
            
<td>
<p>Whether to add the target-platform content as a source. Ignored
for non-Tycho packaging types.</p><br /><b>Default value is</b>: false.<br /></td>
          </tr>
          
<tr class="a">
            
<td><a href="#xzCompress">&lt;xzCompress&gt;</a></td>
            
<td>boolean</td>
            
<td>0.25.0</td>
            
<td>
<p>Add XZ-compressed repository index files. XZ offers better
compression ratios esp. for highly redundant file content.</p><br /><b>Default value is</b>: true.<br /></td>
          </tr>
        </table>
      </section>
      <section>
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        <section>
<h4><a name="a.3Cappend.3E"></a><b><a name="append">&lt;append&gt;</a></b></h4>
        
<div>Whether to append to an existing destination repository. Note that
appending an IU which already exists in the destination repository
will cause the mirror operation to fail.</div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3Ccompress.3E"></a><b><a name="compress">&lt;compress&gt;</a></b></h4>
        
<div>Whether to compress the destination repository metadata files
(artifacts.xml, content.xml).</div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3CcurrentModuleAsSource.3E"></a><b><a name="currentModuleAsSource">&lt;currentModuleAsSource&gt;</a></b></h4>
        
<div>
<p>Whether the current build p2 output should be added as source.
Ignored for non-Tycho packaging types. Ignored if
targetPlatformAsSource == false;</p></div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Since</b>: 1.1.0</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3Cdestination.3E"></a><b><a name="destination">&lt;destination&gt;</a></b></h4>
        
<div>The destination directory to mirror to.</div>
        
<ul>
          
<li><b>Type</b>: java.io.File</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: ${project.build.directory}/repository</li>
        </ul><hr /></section><section>
<h4><a name="a.3Cfilter.3E"></a><b><a name="filter">&lt;filter&gt;</a></b></h4>
        
<div>Filter properties. In particular, a platform filter can be
specified by using keys osgi.os, osgi.ws, osgi.arch.</div>
        
<ul>
          
<li><b>Type</b>: java.util.Map</li>
          
<li><b>Required</b>: No</li>
        </ul><hr /></section><section>
<h4><a name="a.3CfollowOnlyFilteredRequirements.3E"></a><b><a name="followOnlyFilteredRequirements">&lt;followOnlyFilteredRequirements&gt;</a></b></h4>
        
<div>Follow only requirements which match the filter specified.</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.3CfollowStrictOnly.3E"></a><b><a name="followStrictOnly">&lt;followStrictOnly&gt;</a></b></h4>
        
<div>Set to true if only strict dependencies should be followed. A
strict dependency is defined by a version range only including
exactly one version (e.g. [1.0.0.v2009, 1.0.0.v2009]). In
particular, plugins/features included in a feature are normally
required via a strict dependency from the feature to the included
plugin/feature.</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.3CignoreErrors.3E"></a><b><a name="ignoreErrors">&lt;ignoreErrors&gt;</a></b></h4>
        
<div>
<p>If set to true, mirroring continues to run in the event of an
error during the mirroring process and will just log an info
message.</p></div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Since</b>: 1.1.0</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: false</li>
        </ul><hr /></section><section>
<h4><a name="a.3CincludeFeatures.3E"></a><b><a name="includeFeatures">&lt;includeFeatures&gt;</a></b></h4>
        
<div>Whether or not to include features.</div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3CincludeNonGreedy.3E"></a><b><a name="includeNonGreedy">&lt;includeNonGreedy&gt;</a></b></h4>
        
<div>Whether or not to follow non-greedy requirements.</div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3CincludeOptional.3E"></a><b><a name="includeOptional">&lt;includeOptional&gt;</a></b></h4>
        
<div>Whether or not to follow optional requirements.</div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3CincludePacked.3E"></a><b><a name="includePacked">&lt;includePacked&gt;</a></b></h4>
        
<div>Whether or not to include pack200 artifacts.</div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3Cius.3E"></a><b><a name="ius">&lt;ius&gt;</a></b></h4>
        
<div>(Optional) Which IUs to mirror. If omitted, all IUs available in
the source repositories will be mirrored. An IU must specify an id
and may specify a version. If version is omitted, the latest
available version will be queried. By default, IUs required by the
specified IUs will also be mirrored. See also
followStrictOnly,
followOnlyFilteredRequirements ,
includeOptional, includeNonGreedy,
includeFeatures.</div>
        
<ul>
          
<li><b>Type</b>: java.util.List</li>
          
<li><b>Required</b>: No</li>
        </ul><hr /></section><section>
<h4><a name="a.3CkeepNonXzIndexFiles.3E"></a><b><a name="keepNonXzIndexFiles">&lt;keepNonXzIndexFiles&gt;</a></b></h4>
        
<div>
<p>If xzCompress is true, whether jar or
xml index files should be kept in addition to XZ-compressed index
files. This fallback provides backwards compatibility for pre-Mars
p2 clients which cannot read XZ-compressed index files.</p></div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Since</b>: 0.25.0</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul><hr /></section><section>
<h4><a name="a.3ClatestVersionOnly.3E"></a><b><a name="latestVersionOnly">&lt;latestVersionOnly&gt;</a></b></h4>
        
<div>Set to true to filter the resulting set of IUs to only
include the latest version of each Installable Unit only. By
default, all versions satisfying dependencies are included.</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.3CmirrorMetadataOnly.3E"></a><b><a name="mirrorMetadataOnly">&lt;mirrorMetadataOnly&gt;</a></b></h4>
        
<div>Whether to mirror metadata only (no artifacts).</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.3Cname.3E"></a><b><a name="name">&lt;name&gt;</a></b></h4>
        
<div>The target repository name.</div>
        
<ul>
          
<li><b>Type</b>: java.lang.String</li>
          
<li><b>Required</b>: No</li>
        </ul><hr /></section><section>
<h4><a name="a.3Csource.3E"></a><b><a name="source">&lt;source&gt;</a></b></h4>
        
<div>Source repositori(es) to mirror from.</div>
        
<ul>
          
<li><b>Type</b>: java.util.List</li>
          
<li><b>Required</b>: No</li>
        </ul><hr /></section><section>
<h4><a name="a.3CtargetPlatformAsSource.3E"></a><b><a name="targetPlatformAsSource">&lt;targetPlatformAsSource&gt;</a></b></h4>
        
<div>
<p>Whether to add the target-platform content as a source. Ignored
for non-Tycho packaging types.</p></div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Since</b>: 1.1.0</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: false</li>
        </ul><hr /></section><section>
<h4><a name="a.3CxzCompress.3E"></a><b><a name="xzCompress">&lt;xzCompress&gt;</a></b></h4>
        
<div>
<p>Add XZ-compressed repository index files. XZ offers better
compression ratios esp. for highly redundant file content.</p></div>
        
<ul>
          
<li><b>Type</b>: boolean</li>
          
<li><b>Since</b>: 0.25.0</li>
          
<li><b>Required</b>: No</li>
          
<li><b>Default</b>: true</li>
        </ul>
      </section></section>
    </section>
  

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