views:

771

answers:

2

I want to autogenerate some java classes from interfaces. My first thought was to write a code generator, and integrate it as a maven plugin.

I was thinking of creating a maven plugin with a codegen goal that is called during the build process.

So if I choose this route, how do I provide the plugin with the interfaces to be processed? And where should the generated files go?

Are there any existing plugins that can be configured to generate default class implementations?

A: 

Maybe have a look at the XDoclet Maven plugin- XDoclet is often used for generating sources from doclet-style markup in classes (e.g. autogenerating MBean interfaces from implementations) and that sounds similar to what you're doing.

araqnid
+3  A: 

Sources should go in {project.build.directory}/generated-sources

Most plugins take configuration passed through the plugin configuration section in the pom. You can use default values as well, or an annotation and classpath scanning.

A plugin like the maven-jspc-plugin generates code, which you could take a look at. The "Better Builds With Maven" e-book also contains a reasonably comprehensive chapter on writing plugins.

krosenvold
It's normal that they go into a subdirectory of generated-sources. I found that the NetBeans support assumes this.
Dominic Mitchell
More completely, they should go into {project.build.directory}/generated-sources/<plugin-id>
rtenhove