XDoclet 是一个面向属性的java代码生成器,它使java也具有.net的属性能力。要实现XDoclet的功能,就要借助Ant,因为XDoclet实质是Ant的一项任务。
1. 继承DocletTask类,定义自己的Ant的任务。
代码如下:
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的子任务。代码如下:
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
代码如下:
< xdoclet-module >
< subtask
name ="demodoclettask"
implementation-class ="demo.DemoDocletSubTask"
parent-task-class ="demo.DemoDoclet"
/>
</ xdoclet-module >
代码如下:
< 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