Today I pushed the first commit to the repository at GitHub. It contains the basic project layout. I will use Maven Tycho as build system in its brand new version 0.12.0, which was released just a couple of days ago. Also it is not my first Tycho setup, the project structure and pom.xml files are based on the excellent tutorial series by Mattias Holmqvist and the Sonar IDE’s Eclipse plug-in layout.

The different projects and their responsibilities are:

  • org.eclipselab.emf.ecore.protobuf – the Eclipse plug-in
  • org.eclipselab.emf.ecore.protobuf.tests – the unit tests for the Eclipse plug-in
  • org.eclipselab.emf.ecore.protobuf.feature – the Eclipse feature containing all the plug-ins
  • org.eclipselab.emf.ecore.protobuf.releng – the releng (release engineering) project containing the parent pom.xml
  • org.eclipselab.emf.ecore.protobuf.releng.target – the releng project containing the target platform definition
  • com.google.protobuf – the Eclipse plug-in wrapping the Google Protocol Buffer API’s jar file

I have to wrap the Google Protocol Buffer API’s jar file, because the one distributed by Google is not an OSGi bundle and it is not available in a P2 repository, so it is hard to add it to the target platform definition as a dependency. The wrapping is done by the tycho-packaging-plugin with the generate-bundle goal. The required configuration is relatively small, for further details you can have a look at the pom.xml. In the future I might have to switch to the process defined by the Eclipse Orbit.

The target platform definition is based on the latest Eclipse Indigo (3.7) builds available at the following P2 repository  http://download.eclipse.org/releases/indigo/.

I would also like to regularly release builds of the project in a P2 repository at GitHub in the gh-pages branch. There are some blog posts about this, but they all involve (as far as I could see) shell scripts, which I would like to avoid in favor of some configuration in a pom.xml. If anyone reading this knows how to do it please leave a comment 🙂 .

Advertisements