Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: for the plan.

Jump to: navigation, search

Equinox p2 Metadata Generator

The p2 metadata generator is a utility tool that generates metadata and artifact repositories from a given input. The generator is available both as an Eclipse application, and as an Ant task.

Note: The Metadata Generator is deprecated, use the Publisher.

Generator Application

The generator application is contained in bundle org.eclipse.equinox.p2.metadata.generator. This bundle is part of the Eclipse SDK, and is also available in the p2 Admin UI. The generator can be invoked using the generic Eclipse launcher as follows:

eclipse -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator <generatorArgs>

The generator application has three primary modes of operation:

  1. Generating metadata for a folder containing bundles and features (-source argument)
  2. Generating metadata for a traditional Eclipse update site (-updateSite argument)
  3. Generating metadata for an existing Eclipse application that does not contain p2 metadata (-config argument)

Generating metadata from an update manager site

The following example shows how to generate metadata from an pre-existing update site located in "d:\ganymedeM5".

   -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator
   -updateSite d:/ganymedeM5/
   -site file:d:/ganymedeM5/site.xml
   -metadataRepository file:d:/ganymedeM5/
   -metadataRepositoryName "Ganymede Update Site"
   -artifactRepository file:d:/ganymedeM5/
   -artifactRepositoryName "Ganymede Artifacts"
   -vmargs -Xmx256m

Here's another example.

Want to simplify that down to a shell script with a couple of inputs -- site name ("Ganymede") and site path ("d:/ganymedeM5/")? Try this script. To run this you need either Eclipse, the p2-agent, or releng.basebuilder from tag M7_34 or later.

You can also run this from the <java> task in Ant:

 <java jar="@{launcherjar}" fork="true" timeout="10800000" taskname="p2"
   jvm="${java.home}/bin/java" failonerror="false" maxmemory="256m">
     <fileset dir="${}/plugins"
     <pathelement location="${}/plugins" />
   <arg line=" org.eclipse.equinox.launcher.Main" />
   <arg line=" -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator" />
   <arg line=" -updateSite ${updateSiteJarDir}/ -site file:${updateSiteJarDir}/site.xml" />
   <arg line=" -metadataRepository file:${updateSiteJarDir}/ -metadataRepositoryName &quot;My Updates&quot;" />
   <arg line=" -artifactRepository file:${updateSiteJarDir}/ -artifactRepositoryName &quot;My Artifacts&quot;" />
   <arg line=" -noDefaultIUs -compress -reusePack200Files" />

Be sure to give the JVM enough heap space (-Xmx argument), since insufficient heap space can lead it to delete your valuable plugins! See bug 233240.

Arguments describing the input

-source <path> 
the path to a folder containing plugins and folders to generate p2 metadata for
-updateSite <path> 
the path of a traditional update site to generate p2 metadata for
-config <path> 
the path of an Eclipse application that is not p2-enabled
-exe <path> 
the location of the application launcher executable
-launcherConfig <path> 
the path of the launcher configuration file (eclipse.ini)
-features <path> 
the location of features to generate metadata for
-bundles <path> 
the location of bundles to generate metadata for
-base <path> 
a base location containing a plugins/ and features/ directory
the operating system of the application metadata is being generated for
-site <path> 
the URL of a site.xml file used to generator categories

Arguments describing the output

the URL to a writable metadata repository that will contain the produced installable units
a user friendly name for the metadata repository
the URL to a writable artifact repository that will contain the produced artifacts
a user friendly name for the artifact repository
flag indicating whether the artifacts should be published to the repository. When this flag is not set, the actual bytes underlying the artifact will not be copied, but the repository index will be created. When this option is not specified, it is recommended to set the artifactRepository to be in the same location as the source (-source)
flag indicating that repositories will be appended to
The name of the installable unit referring to all the IUs that have been added to the repository during the run
The version of the root installable unit
the flavor associated with the configuration units generated. (This will be removed for 1.0)
causes the metadata and artifact repositories to be written into the source location
flag to indicate the default configuration units should not be created
cause the repositories to store their index in compressed form
Specifying -reusePack200 does not require you to have pack200 files on the server, nor does it cause pack200 files to be created. When this option is specified, the generator looks for pack.gz files and if available it creates an entry for them in the artifacts.jar.

Generator Ant Task

The generator Ant task is called "p2.generator". This task is also available in the org.eclipse.equinox.p2.metadata.generator bundle.

Back to the top