Plugin Documentation

This report describes goals, parameters details, requirements and sample usage of this plugin.

Goals

Goals available for this plugin:

Goal Description
tycho-p2-repository:archive-repository

Creates a zip archive with the aggregated p2 repository.

tycho-p2-repository:assemble-maven-repository

This goals produces a "p2-maven-site" from the projects declared <dependencies> (and <dependencyManagement> if desired). A p2-maven-site is completely manageable by standard maven tools and has the following properties:

  • 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
  • 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
Please note: 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.

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:

<repository>
<id>my-p2-maven-site
<url>mvn:[groupId]:[artifactId]:[version]:zip:p2site
<layout>p2
</repository>
A target location of type software-site:
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="mvn:[groupId]:[artifactId]:[version]:zip:p2site"/>
-- list desired units here --
</location>

tycho-p2-repository:assemble-repository

Aggregates content into a p2 repository in ${project.build.directory}/repository.

  1. Copies resources (if any) from ${project.build.outputDirectory} to ${project.build.directory}/repository. This allows to include additional files such as index.html or about files from src/main/resources (or elsewhere) into the p2 repository.
  2. The p2 aggregation into ${project.build.directory}/repository runs recursively: it starts with the content published in the current module, and traverses all artifacts that are marked as included 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.)

tycho-p2-repository:fix-artifacts-metadata Updates the artifact repository metadata checksums and size of modified artifacts in the given folder.

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 jar-signing-extra integration test

tycho-p2-repository:remap-artifacts-to-m2-repo 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.
tycho-p2-repository:repo-to-runnable Mojo that provides the "repo2runnable" functionality described here.
tycho-p2-repository:verify-repository

Checks the consistency of the aggregated p2 repository.

System Requirements

The following specifies the minimum requirements to run this Maven plugin:

Maven 3.9.0
JDK 17

System Requirements History

The following specifies the minimum requirements to run this Maven plugin for historical versions:

Plugin Version Maven JDK
from 4.0.0 to 4.0.9 3.9.0 17
from 3.0.0 to 3.0.5 - 17
from 2.0.0 to 2.7.5 - 11
from 0.25.0 to 1.7.0 - 8
from 0.23.0 to 0.24.0 - 7
0.22.0 - 6
from 0.12.0 to 0.21.0 - 5

Usage

You should specify the version in your project's plugin configuration:

<project>
  ...
  <build>
    <!-- To define the plugin version in your parent POM -->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-repository-plugin</artifactId>
          <version>4.0.9</version>
        </plugin>
        ...
      </plugins>
    </pluginManagement>
    <!-- To use the plugin goals in your POM or parent POM -->
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-p2-repository-plugin</artifactId>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

For more information, see "Guide to Configuring Plug-ins"