The Publisher is the means by which deployable entities get added to repositories. It consists of an extensible set of publishing actions, applications and Ant tasks that allow users to generate p2 repositories from a number of different sources.
The Publisher consists of a number of headless (no GUI) Eclipse Applications that can be used to generate metadata from a variety of sources. Examples of such applications include:
- FeaturesAndBundles Publisher: Generates metadata from a set of features and bundles
- Product Publisher: Generates metadata from a .product file
- Category Publisher: Generates categories for an existing repository
- UpdateSite Publisher: Generates metadata from an UpdateSite
- Install Publisher: Generates metadata from an existing Eclipse install
UpdateSite Publisher Application
The UpdateSite Publisher Application (org.eclipse.equinox.p2.publisher.UpdateSitePublisher) is a headless application that is capable of generating metadata (p2 repositories) from an update site containing a site.xml, bundles and features. The application can be invoked as follows:
java -jar <targetProductFolder>/plugins/org.eclipse.equinox.launcher_*.jar -application org.eclipse.equinox.p2.publisher.UpdateSitePublisher -metadataRepository file:/<some location>/repository -artifactRepository file:/<some location>/repository -source /<location with a site.xml> -configs gtk.linux.x86 -compress -publishArtifacts
Features And Bundles Publisher Application
The Features and Bundles Publisher Application (org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher) is a headless application that is capable of generating metadata (p2 repositories) from pre-build Eclipse bundles and features. The application can be invoked as follows:
java -jar <targetProductFolder>/plugins/org.eclipse.equinox.launcher_*.jar -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/<some location>/repository -artifactRepository file:/<some location>/repository -source /<location with a plugin and feature directory> -configs gtk.linux.x86 -compress -publishArtifacts
In this example, the plugins in /<location with a plugin and feature directory>/plugins and features in /<location with a plugin and feature directory>/features will be published in the file:/<some location>/repository repository. The artifacts will also be published, and the repositories (artifacts.xml and content.xml) compressed.
The Product Publisher Application (org.eclipse.equinox.p2.publisher.ProductPublisher) is a headless application that is capable of generating product configuration metadata. The product publisher does not publish the bundles or features that constitute the product. The application can be invoked as follows:
-console -consolelog -application org.eclipse.equinox.p2.publisher.ProductPublisher -metadataRepository file:/home/irbull/Desktop/temp/mail1 -artifactRepository file:/home/irbull/Desktop/temp/mail1 -productFile /home/irbull/workspaces/p2/mail/mail.product -append -publishArtifacts -executables /home/irbull/eclipse/delta/eclipse/features/org.eclipse.equinox.executable_3.3.200.v20090426-1530-7M-Fm-FI3UouOdcoUJz-7oc -flavor tooling -configs gtk.linux.x86
Note: There are currently a few oustanding (but workable) issues with this application:
- You must list any bundles to start on the configuration tab.
- Any features / bundles should be specified with "Exact" versions (no qualifiers) or 0.0.0 for latest
- The executables feature must be specified
- Flavor must be specified (if unsure, use tooling)
- Unchecking "Include native launchers" has no effect
The Category Publisher Application (org.eclipse.equinox.p2.publisher.CategoryPublisher) is a headless application that is capable of categorizing a set of Installable Units in a given repository. The categorization is driven from a category file. The application can be invoked as follows:
-console -consolelog -application org.eclipse.equinox.p2.publisher.CategoryPublisher -metadataRepository file:/<repo location>/repository -categoryDefinition file:/home/irbull/workspaces/p2/mail/category.xml -categoryQualifier -compress
This application will use the categories defined in category.xml to categorize the metadata in file:/<repo location>/repository with the categories defined in category.xml. This command will compress the repository.
The publisher consists of two ant tasks for creating metadata. The first ant task (p2.publish.featuresAndBundles) is used to create metadata from pre-build bundles and features, while the second task (p2.publish.product) is used to create metadata from a .product file.
Features and Bundles Publisher Task
Product Publisher Task
TODO: Add information about how to publish repositories using PDE Build. There is also some information about the ANT tasks PDE build provides at: PDE Ant Tasks
There are a number of ways to get involved with the development of The Publisher. In particular:
- Experiment with and give feedback on the publisher's provisional API
- Ensure the publisher Java Docs are accurate (and provide feedback / patches where needed)
- Experiment with the publisher's ANT tasks and headless applications
- Review the list of outstanding publisher bugs Open Publisher Bugs
The publisher developer discusses take place on the p2-dev list