Posted on 2007-12-24 17:54
G_G 阅读(1479)
评论(0) 编辑 收藏 所属分类:
javaGeneral
学习xdoclet 发现是很有用的。易于规范,使用方便;
参考: http://blog.easyjf.com/html/blog/20061127/3290288676803397.htm
官方完整API:
Template Language (*.xdt)因为参考中:是还是比较复杂的例(数本人愚钝^_^)特留一文:
1>ant编辑文件
<?xml version="1.0" encoding="UTF-8"?>
<project name="xdocletExample" default="doall" basedir=".">
<property name="basedir" location="E:\ue_test\xdoclet" />
<property name="xdoclet.lib.dir" location="D:\hbn\hibernate-3.2\xdoclet-1.2.3\lib" />
<property name="gen.src.dir" location="${basedir}/target" />
<property name="src.dir" location="${basedir}/src" />
<property name="template.dir" location="${basedir}/template" />
<property name="customtag.dir" location="${basedir}/bin" />
<path id="xdoclet.lib.path">
<fileset dir="${xdoclet.lib.dir}" includes="*.jar" />
</path>
<taskdef name="xdoclet" classname="xdoclet.DocletTask" classpathref="xdoclet.lib.path" />
<target name="init" />
<target name="daogener" depends="init">
<xdoclet destdir="${gen.src.dir}">
<fileset dir="${src.dir}" includes="${cjava.file}" />
<template templateFile="${xdt.file}" acceptInterfaces="false" acceptAbstractClasses="false" destinationfile="{0}DAO.java" />
</xdoclet>
</target>
<target name="doall" depends="daogener,daoimplgener" />
</project>
在运行上面文件时候动态输入参数
1.依照的 .java 文件( cjava.file );
2.依照的 .xdt.file 文件( xdt.file );
比如DOS中输入:
E:\ue_test\xdoclet>ant daogener
-Dxdt.file=template\daointerface.xdt
-Dcjava.file=test\TestXDoclet.java
2.参考的java文件(简单过头了 呵呵)
package test;
/**
* @hasRef
*/
public class TestXDoclet{
/**
* @ref.model name="sytp"
*/
private PubSystype sytp;
private String gg;
}
3.xdt 模板
标签解释:
<XDtClass:ifHasClassTag tagName="hasRef">判断 java文件中有 @hasRef
<XDtField:forAllFields> 1> 循环查找
2>判断有@ref.model name=。。 <XDtField:ifHasFieldTag tagName="ref.model" paramName="name">
3>取值
<XDtField:fieldTagValue tagName="ref.model" paramName="name" />
package com.hycs.bs.client.itf;
import java.util.List;
//这是 packageName.className 这和好理解
import <XDtPackage:packageName />.<XDtClass:className />;
public interface <XDtClass:className />DAO {
//添加
boolean add(<XDtClass:className /> instance);
//逻辑添加
<XDtClass:ifHasClassTag tagName="hasRef">
boolean add(<XDtClass:className /> instance,
<XDtField:forAllFields>
<XDtField:ifHasFieldTag tagName="ref.model" paramName="name">
String <XDtField:fieldTagValue tagName="ref.model" paramName="name" />
</XDtField:ifHasFieldTag>
</XDtField:forAllFields>);
</XDtClass:ifHasClassTag>
//更新
boolean update(<XDtClass:className /> instance);
//得到一个对象
<XDtClass:className /> get(String pkid);
}
运行DOS->
E:\ue_test\xdoclet>ant daogener
-Dxdt.file=template\daointerface.xdt
-Dcjava.file=test\TestXDoclet.java
得到的代码:
package com.hycs.bs.client.itf;
import java.util.List;
//这是 packageName.className 这和好理解
import test.TestXDoclet;
public interface TestXDocletDAO {
//添加
boolean add(TestXDoclet instance);
//逻辑添加
boolean add(TestXDoclet instance,String sytp);
//更新
boolean update(TestXDoclet instance);
//得到一个对象
TestXDoclet get(String pkid);
}