Eclipse Buckminster: SVN repository path does not match plugin id

The buckminster project provides a great infrastructure to build your eclipse plugin. Especially in combination with a continous integration server (e.g. Jenkins) it works pretty smoothly.

It works best if you created your plugin projects according to specific best practices. For example, you should name your projects and project directories according to the plugin’s id. This is used for example in the rmap file (resource map file) when buckminster looks up a dependency in an SVN repository or local file system. The following code snippet specifies a locator to search a component in a directory path matching the components id (the plugin id):

<rm:searchPath name=”featuremodel”>
<rm:provider componentTypes=”eclipse.feature,osgi.bundle” readerType=”svn” source=”true”>
<rm:uri format=”http://dev.eclipse.org/svnroot/modeling/org.eclipse.emft.featuremodel/trunk/{0}”>
<bc:propertyRef key=”buckminster.component” />
</rm:uri>
</rm:provider>
</rm:searchPath>

However, this checkout does not work properly for all components of the EMF Feature Model projects, because the components org.eclipse.emft.featuremodel.metamodel.edit and org.eclipse.emft.featuremodel.metamodel.editor have been placed in directories without the “metamodel” path segment.

To fix this issue, a replacement pattern can be defined to fix the path problem. So changing the snippet above to the following code fixes the issue:

<rm:searchPath name=”featuremodel”>
<rm:provider componentTypes=”eclipse.feature,osgi.bundle” readerType=”svn” source=”true”>
<rm:uri format=”http://dev.eclipse.org/svnroot/modeling/org.eclipse.emft.featuremodel/trunk/{0}”>
<bc:replace>
<bc:propertyRef key=”buckminster.component” />
<bc:match pattern=”^org\.eclipse\.featuremodel\.metamodel((.\w+))$”
replacement=”org.eclipse.featuremodel$1″ />
</bc:replace>
</rm:uri>
</rm:provider>
</rm:searchPath>

Note that the pattern represents a regular expression and the replacement attribute consists of a simple string.

Leave a Comment