Posted on 2007-12-24 17:54
G_G 閱讀(1490)
評論(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);
}