8

I tried googling left and right, and couldn't find a specification for the p2 repository format that Eclipse is using.

I am interested in reading p2 metadata (content.xml/jar and artifacts.xml/jar) and I'd like to know their grammar, the repository layout (composite vs simple, etc.)

I can, of course, reverse-engineer this by looking at a few existing repositories, but I'd like to know if there is a document that describes this in detail.

oberlies
  • 11,503
  • 4
  • 63
  • 110
Iulian Dragos
  • 5,692
  • 23
  • 31

2 Answers2

5

The format of these files is not considered API, and as such, there is no specification. These are actually just one such format for p2 repositories, and you can plug-in your own format if you'd like. The only API for the repository format is an implementation of IMetadataRepository and IArtifactRepository.

If you would like to process these files, I suggest loading the repositories (using the IMetadataRepositoryManager and IArtifactRepositoryManager) and using the API these interfaces expose.

irbull
  • 2,490
  • 2
  • 20
  • 28
  • 2
    Are there implementations for these interfaces that don't require an OSGi container? I am writing a small command line utility and I don't want to pull a dependency on Eclipse. – Iulian Dragos Sep 30 '12 at 08:54
1

Yes, p2 is practically unusable without OSGi. However, if you need an example of small command line application using p2 API I suggest taking a look at p2diff. You may also find the following link interesting: Query Language for p2. If you really are dead set against using Equinox, you might try looking at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryIO.Parser and org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepositoryIO.Parser - it's just XML after all (albeit complicated).

Jarek Przygódzki
  • 4,284
  • 2
  • 31
  • 41