XDoclet Overview News and Status Download/Installation Using XDoclet Best Practices FAQ License Ant Task Reference <ejbdoclet .. /> <webdoclet .. /> <hibernatedoclet .. /> <jdodoclet .. /> <jmxdoclet .. /> <doclet .. /> <documentdoclet .. /> Tag Reference apache (@soap @struts) bea (@weblogic) caucho (@resin) ejb (@ejb @dao) exolab (@castor) hp (@hpas) hibernate (@hibernate) ibm (@websphere) java (@javabean) jboss (@jboss) jdo (@jdo) jmx (@jmx) macromedia (@jrun) mvcsoft (@mvcsoft) mx4j (@mx4j) objectweb (@jonas) orion (@orion) pramati (@pramati) sybase (@easerver) web (@web @jsp) webwork (@webwork) xdoclet (@xdoclet @doc) Feature Documentation Using Value Objects Advanced Maven Plug-in Merge Points Log4J Configuration IDE Integration Migration from EJBDoclet Ant 1.5 Troubleshooting Community Feedback Resources Tools Developer Resources Developer Guide Architecture Branches and Tags CVS Directory Layout XDoclet 2.0 Design Planning Development Reference Javadoc (API) Template Language (*.xdt) Todo List Project Documentation Front Page Project Info Project Reports Development Process | ### Maven XDoclet Plug-in Maven 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-to 1. 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>

        <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.