Maven Plugin Provider Infrastructure

Rationale

There are many Maven plugins that are available out there and there will be ever more in the future. Making the best use of them requires the user to have a good knowledge of the exposed properties.

Mevenide can help by providing an infrastructure to help Maven Plugins to expose their properties in a easy way.

Properties modified through those pages (i.e. properties whose value is not the default one) are passed to the VM. However properties specified in the launch config are particular to a specific build and thus take precedence.

So you can see those dynamic preference pages much like a particular view of a default.properties file - later we will also provide a simple way to edit the ~/build.properties file.

Plug into Mevenide

To provide their own page Maven plugin providers can declaratively plug into Mevenide preference pages. Screenshot 1 and 2 below is an example of that interaction :



Screenshot 1 PDE plugin provider

First Tab presents a short description of the plugin. The other Tabs display the various properties that the plugin exposes, each Tab representing a different categories. We introduced categories to allow better organization of the properties - it is helpful for plugins exposing quite a number of properties, as the Maven PDE Plugin example demonstrates it.





Screenshot 1 PDE plugin provider

To add a new page, plugins provider have to contribute a new Eclipse plugin that uses the org.mevenide.ui.preference extension point. Please refer to the extension point documentation for more details.

A template for the Genapp plugin is available in Mevenide CVS Head for quicker startup.

However we are aware that almost all needed informations are already available in the goals.xml and properties.xml documents. So in the near future we will provide a Maven plugin to automatically generate the most part of the Eclipse plugin.

The Provider infrastucture is still in the early stages, so we welcome any feedback about it, either through Jira or the mevenide user-list.