<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from org.apache.maven.plugins:maven-plugin-plugin:3.6.2:report at 2022-01-21
 | Rendered using Apache Maven Fluido Skin 1.10.0
-->
<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.11.1" />
    <title>Tycho p2 Repository Plugin &#x2013; Plugin Documentation</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.10.0.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.10.0.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 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: 2022-01-21<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.6.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="../../target-platform-configuration/plugin-info.html" title="Target Platform Configuration"><span class="none"></span>Target Platform Configuration</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="Plugin_Documentation"></a>Plugin Documentation</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 align="left"><a href="./archive-repository-mojo.html">tycho-p2-repository:archive-repository</a></td>
<td><p>Creates a zip archive with the aggregated p2 repository.</p></td></tr>
<tr class="a">
<td align="left"><a href="./assemble-maven-repository-mojo.html">tycho-p2-repository:assemble-maven-repository</a></td>
<td><p>This goals produces a "p2-maven-site" from the projects declared
&lt;dependencies&gt; (and &lt;dependencyManagement&gt; if desired).
A p2-maven-site is completely manageable by standard maven tools
and has the following properties:</p>
<ul>
<li>The artifacts are not stored in the site itself but referenced
as maven-coordinates, that means you don't have to upload your
artifacts to a dedicated place, everything is fetched from the
maven repository</li>
<li>The metadata of the page is attached to the current project
with type=zip and classifier=p2site and could be deployed using
standard maven techniques</li>
</ul>
<b>Please note:</b> Only valid OSGi bundles are included, there is
no way to automatically wrap plain jars and they are silently
ignored. This is intentional, as the goal of a p2-maven-site is to
use exactly the same artifact that is deployed in the maven
repository. <br />
<br />
 
<p>The produced p2-maven-site can then be consumed by Tycho or PDE
targets (m2eclipse is required for this), in the following way: A
tycho-repository section:</p>
<pre>
&lt;repository&gt;
&lt;id&gt;my-p2-maven-site&lt;/id&gt;
&lt;url&gt;mvn:[grouId]:[artifactId]:[version]:zip:p2site&lt;/url&gt;
&lt;layout&gt;p2&lt;/layout&gt;
&lt;/repository&gt;
</pre>

A target location of type software-site: 
<pre>
 &lt;location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit"&gt;
&lt;repository location="mvn:[grouId]:[artifactId]:[version]:zip:p2site"/&gt;
-- list desired units here --
&lt;/location&gt;
</pre>

<br />
<br /></td></tr>
<tr class="b">
<td align="left"><a href="./assemble-repository-mojo.html">tycho-p2-repository:assemble-repository</a></td>
<td><p>Aggregates content into a p2 repository in
<code>${project.build.directory}/repository</code>.</p>
<ol>
<li>Copies resources (if any) from
<code>${project.build.outputDirectory}</code> to
<code>${project.build.directory}/repository</code>. This allows to
include additional files such as <code>index.html</code> or about
files from <code>src/main/resources</code> (or elsewhere) into the
p2 repository.</li>
<li>The p2 aggregation into
<code>${project.build.directory}/repository</code> runs
recursively: it starts with the content published in the current
module, and traverses all artifacts that are marked as
<em>included</em> in already aggregated artifacts. (The following
artifacts can include other artifacts: categories, products, and
features. Note: Dependencies with a strict version range, i.e. a
range which only matches exactly one version of an artifact, are
also considered as inclusions.)</li>
</ol>
<br />
<br /></td></tr>
<tr class="a">
<td align="left"><a href="./fix-artifacts-metadata-mojo.html">tycho-p2-repository:fix-artifacts-metadata</a></td>
<td>Updates the artifact repository metadata checksums and size of
modified artifacts in the given folder. 
<p>This can be used if some other mojo (e.g. jar-signer) modifies
the repository artifacts after the assemble-repository step. An
example could be found in the <a
href="https://github.com/eclipse/tycho/tree/master/tycho-its/projects/jar-signing-extra">jar-signing-extra</a>
integration test</p></td></tr>
<tr class="b">
<td align="left"><a href="./remap-artifacts-to-m2-repo-mojo.html">tycho-p2-repository:remap-artifacts-to-m2-repo</a></td>
<td>Modify the artifact metadata of the provided p2 repository by
adding extra mapping rules for artifacts the can be resolved to
Maven repositories so the URL under Maven repository is used for
fetching and artifact is not duplicated inside this repo.</td></tr>
<tr class="a">
<td align="left"><a href="./verify-repository-mojo.html">tycho-p2-repository:verify-repository</a></td>
<td><p>Checks the consistency of the aggregated p2 repository.</p></td></tr></table><section>
<h3><a name="System_Requirements"></a>System Requirements</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 align="left">Maven</td>
<td>3.8.4</td></tr>
<tr class="b">
<td align="left">JDK</td>
<td>11</td></tr>
<tr class="a">
<td align="left">Memory</td>
<td>No minimum requirement.</td></tr>
<tr class="b">
<td align="left">Disk Space</td>
<td>No minimum requirement.</td></tr></table></section><section>
<h3><a name="Usage"></a>Usage</h3><a name="Usage"></a>
<p>You should specify the version in your project's plugin configuration:</p>
<div class="source"><pre class="prettyprint">&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&lt;/groupId&gt;
          &lt;artifactId&gt;tycho-p2-repository-plugin&lt;/artifactId&gt;
          &lt;version&gt;2.6.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&lt;/groupId&gt;
        &lt;artifactId&gt;tycho-p2-repository-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.6.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></section></section>
        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>&#169;      2008&#x2013;2022
<a href="http://www.eclipse.org/">Eclipse Foundation</a>
</p>
        </div>
      </div>
    </footer>
<script>
	if(anchors) {
	  anchors.add();
	}
</script>
  </body>
</html>
