Development of Apache Doxia Eclipse Editors

The project is divided in an OSGi bundle containing Apache Doxia and a set of Eclipse plugins and features. The build uses Tycho and of course Apache Maven (version 3).

Doxia Components as an OSGi plugin

To have Eclipse plugins that use the insides of Doxia, we need at least one OSGi bundle containing Doxia itself (org.apache.maven.doxia.eclipse.dependencies). This could be arranged by adding OSGi manifest metadata to them one-at-a-time, but I doubt that anyone has much enthusiasm for that.

The initial attempt at this using the maven-bundle-plugin was relatively simple. By using Embed-Dependencies and _exportcontents, you can instruct it to grab all the maven dependencies of the current project as jars embedded in the bundle jar, and set up the manifest to match.

Unfortunately, both the maven-eclipse-plugin and M2E are poorly behaved in the face of this. m-e-p responds by trying to edit the MANIFEST.MF of a project that uses it. M2E, according to Igor, 'does not support Embed-Dependencies'. Since some of us are not big M2E fans, I'm structuring this in a way which should be palatable to both.

That requires giving up on Tycho's ability to work with a dependent bundle called out as a Maven dependency. Instead, this project builds an OSGi bundle which is, essentially, 'shaded', and then sticks it into a P2 repository hiding in the local repository. Then the Tycho build of the editor plugins searches that repository.

Eclipse plugins

The plugins are divided in a common project (org.apache.maven.doxia.ide.eclipse.common.ui), which contains all generic classes to handle actions, dialogs, editors, rules and wizards. Other plugins are specific implementations for a given Doxia format (e.g. APT).


Tycho won't resolve through the reactor for the bundle, so you need to build org.apache.maven.doxia.eclipse.dependencies project first:

mvn clean install -f doxia-osgi/pom.xml
|_ Makes an OSGi bundle of Doxia.

Then, and only then, you can build plugins themselves:

mvn clean install -f eclipse-plugins/pom.xml
|_ Creates a feature and a P2 repository
|_ Builds Eclipse plugins

See the README.TXT for more informations.