Maven XDoclet Plug-inMaven is an increasingly popular build tool, and XDoclet maintains its own Maven plug-in. This plug-in is located in the same folder as the other xdoclet jar files, and is named maven-xdoclet-plugin-<version>.jar. Just drop it in your $MAVEN_HOME/plugins directory and you're ready to go. You might have to delete your $MAVEN_HOME/plugins/*.cache files and previous un-zipped XDoclet plug-ins to be able to get it to work properly. The Maven XDoclet plug-in supports all standard tasks and subtasks of XDoclet. How-to1. In order to use the XDoclet plug-in, you have to declare the necessary XDoclet-module jar files in your project.xml. So if you want to use ejbdoclet with jboss, you should do: <dependencies> <dependency> <id>xdoclet+ejb-module</id> <version>1.2b2</version> </dependency> <dependency> <id>xdoclet+jboss-module</id> <version>1.2b2</version> </dependency> <!-- This one is needed because jboss-module depends on it --> <dependency> <id>xdoclet+jmx-module</id> <version>1.2b2</version> </dependency> <dependency> <id>ejb</id> <version>2.0</version> </dependency> </dependencies> 2. If you want XDoclet to run automatically before the compile step you should define a maven.xml file like this: <project> <preGoal name="java:compile"> <attainGoal name="xdoclet:ejbdoclet"/> </preGoal> </project> 3. Now how does XDoclet know you want to run remoteinterface subtask or what is the remote interface class pattern? Well, you need to define some properties, but some properties have defaults. For example, by default ejbdoclet has these defaults defined in its plugin.properties file: #ejbdoclet default properties maven.xdoclet.ejbdoclet.destDir=${maven.build.dir}/xdoclet/ejbdoclet maven.xdoclet.ejbdoclet.fileset.0=true maven.xdoclet.ejbdoclet.fileset.0.include=**/*Bean.java maven.xdoclet.ejbdoclet.deploymentdescriptor.0=true maven.xdoclet.ejbdoclet.deploymentdescriptor.0.destDir=${maven.build.dir}/xdoclet/ejb/META-INF maven.xdoclet.ejbdoclet.entitybmp.0=true maven.xdoclet.ejbdoclet.entitycmp.0=true maven.xdoclet.ejbdoclet.entitypk.0=true maven.xdoclet.ejbdoclet.homeinterface.0=true maven.xdoclet.ejbdoclet.localhomeinterface.0=true maven.xdoclet.ejbdoclet.localinterface.0=true maven.xdoclet.ejbdoclet.remoteinterface.0=true maven.xdoclet.ejbdoclet.session.0=true maven.xdoclet.ejbdoclet.utilobject.0=true So by default the destDir is target/xdoclet/ejbdoclet and all classes ending with "Bean" are processed. The entitybmp, entitycmp, etc subtasks are run. Basically for any task or subtask parameter you find in XDoclet documentation there's a counterpart in the maven plug-in too. The destDir parameter of ejbdoclet is named maven.xdoclet.ejbdoclet.destDir for example. Any nested element with many cardinality (you can nest many of them inside ejbdoclet for example) and all subtasks are indexed. So you reference entitypk subtask of ejbdoclet with maven.xdoclet.ejbdoclet.entitypk.0 and if you want to specify the pattern attribute of it you define it like this: maven.xdoclet.ejbdoclet.entitypk.0.pattern={0}PK. |