XDoclet 是一个面向属性的java代码生成器,它使java也具有.net的属性能力。要实现XDoclet的功能,就要借助Ant,因为XDoclet实质是Ant的一项任务。
1. 继承DocletTask类,定义自己的Ant的任务。
代码如下:
package demo;
import org.apache.log4j.Logger;
import xdoclet.DocletTask;
public class DemoDoclet extends DocletTask {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(DemoDoclet.class);
public DemoDoclet()
{
logger.info("DemoDoclet start
.!");
//this.addSubTask(new DemoDocletSubTask()); 实现DocletTask的子任务,其实不需要在这里实例子任务,只要在xdoclet.xml声明就可以。
}
} 如果要实现DocletTask的子任务。代码如下:
package demo;
import org.apache.log4j.Logger;
import xdoclet.XDocletException;
import xdoclet.SubTask;
public class DemoDocletSubTask extends SubTask {
/**
* Logger for this class
*/
private static final Logger logger = Logger
.getLogger(DemoDocletSubTask.class);
public DemoDocletSubTask() {
super();
// TODO Auto-generated constructor stub
}
public void execute() throws XDocletException {
// TODO Auto-generated method stub
logger.info("DemoDocletSubTask start xml
.!");
}
}
目录如下:
classes
|
+-demo
| |
| +- DemoDoclet.class
| |
| +- DemoDocletSubTask.class
|
+-META-INF
|
+- xdoclet.xml
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<xdoclet-module>
<subtask
name="demodoclettask"
implementation-class="demo.DemoDocletSubTask"
parent-task-class="demo.DemoDoclet"
/>
</xdoclet-module>代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="XDoclet Generator" default="_xdoclet_generation_">
<property file="xdoclet-build.properties" />
<property name="eclipse.home" value="D:/eclipse3.1/eclipse" />
<property name="xdoclet.basedir" value="${eclipse.home}/plugins/org.jboss.ide.eclipse.xdoclet.core_1.5.0.M2" />
<property name="jboss.net.version" value="4.0" />
<property name="xdoclet.lib.dir" value="d:/xdoclet-bin-1.2.3/lib" />
<property name="build.dir" value="." />
<property name="build.classes.dir" value="${build.dir}/classes" />
<property name="build.src.dir" value="${build.dir}/src" />
<path id="project.classpath">
<pathelement location="classes" />
<pathelement location="D:/xdoclet-bin-1.2.3/lib/xdoclet-1.2.3.jar" />
<pathelement location="D:/xdoclet-bin-1.2.3/lib/xjavadoc-1.1.jar" />
<pathelement location="D:/ant-1.6.5/apache-ant-1.6.5/lib/ant.jar" />
<pathelement location="D:/xdoclet-bin-1.2.3/lib/log4j.jar" />



</path>
<path id="xdoclet.classpath">
<path refid="project.classpath" />
<fileset dir="${xdoclet.lib.dir}">
<include name="*.jar" />
<exclude name="xdoclet-module-jboss-net-*.jar" />
</fileset>
<fileset dir="${xdoclet.basedir}">
<include name="xdoclet-module-jboss-net-${jboss.net.version}*.jar" />
</fileset>
</path>


<!-- =================================
target: demodoclet
================================= -->
<target name="demodoclet" description="--> description">
<taskdef name="demodoclet" classname="demo.DemoDoclet" classpathref="xdoclet.classpath" />
<demodoclet destdir="${build.src.dir}" excludedtags="@version,@author,@todo,@see" addedtags="@xdoclet-generated at TODAY,@copyright The XDoclet Team,@author XDoclet,@version version" force="false" verbose="false">
<fileset dir="${build.src.dir}">
<include name="*.java" />
</fileset>
<demodoclettask />


</demodoclet>
</target>

<target name="_xdoclet_generation_" depends="demodoclet" />
</project>

运行结果如下:
Buildfile: xdoclet-build.xml
demodoclet:
[demodoclet] (demo.DemoDoclet 15 ) DemoDoclet start....!
[demodoclet] (XDocletMain.start 47 ) Running <demodoclettask/>
[demodoclet] (demo.DemoDocletSubTask 22 ) DemoDocletSubTask start xml....!
[demodoclet] (XDocletMain.start 47 ) Running <demodoclettask/>
[demodoclet] (demo.DemoDocletSubTask 22 ) DemoDocletSubTask start xml....!
_xdoclet_generation_:
BUILD SUCCESSFUL
Total time: 3 seconds

浙公网安备 33010602011771号