Jun 01 2010
Generating p2 meta data from command line
Many times when working with Eclipse RCP I had to generate ad-hoc updatesites (usually containing some 3rd party plug-ins). What I usually did to achieve this (with Eclipse IDE):
- create new feature project
- add plug-ins to the feature
- create new updatesite project
- add the feature to the updatesite (pre-p2 style – site.xml)
- export newly created updatesite (letting Eclipse to deal with creating p2 meta data)
Since I needed to automate this process I started researching on p2 capabilities and found out that it can be done from command line using FeatureAndBundlesPublisher application. Sample command line invocation to do it:
%ECLIPSE_EXE% -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/%P2_TARGET% -artifactRepository file:/%P2_TARGET% -source %P2_SRC% -compress -configs win32.win32.x86 -publishArtifacts
Where:
- ECLIPSE_EXE – points to Eclipse executable;
- P2_TARGET – path to an empty directory where p2 repository should be created;
- P2_SRC – path to the directory with /plugins subdirectory and plug-ins to be published (jar files) inside;
- -compress parameter is optional. It compresses artifacts.xml and content.xml to jar (zip) files.

Thank you for the enty. p2 seems to have lots of cool (hidden) features.
Thank you it is very useful.
Now I am looking for a solution to update the p2 target without overwrite it. Any idea ?
@Xavier Adding -append option should do the trick.
Thank you, it works fine.
The ouput (content of the %P2_TARGET% folder) of the FeaturesAndBundlesPublisher application is not recognized in eclipse helios 3.6.1 update manager. Features must be present for the bundles to make it a valid p2 site.
@bob FeaturesAndBundlesPublisher generates valid updatesite. I would rather say that GUI for updates in Eclipse is not allowing installation of individual bundles but rather only installation of the features.
Hi!
Thanks for the entry. We use this mechanism in our automated build, too.
Unfortunately, eclispe does not recognize that the features should be grouped into categories, which are defined in the site.xml. The site.xml is located in the same directory where the artifacts.jar and contents.jar are located.
Do you know if the site.xml needs to be a parameter of the FeaturesAndBundlesPublisher, or would I use the org.eclipse.equinox.p2.publisher.UpdateSitePublisher application instead of the FeaturesAndBundlesPublisher? This takes a site.xml as parameter?!
Any help is appreciated!
Markus
@Markus
Have you tried using Category Publisher (application org.eclipse.equinox.p2.publisher.CategoryPublisher)?
Perfect.
It seems that eclipse is prepared for everything!
Thanks for the fast answer!
Markus