posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          xdoclet 代碼生成

          Posted on 2007-12-24 17:54 G_G 閱讀(1495) 評論(0)  編輯  收藏 所屬分類: javaGeneral
          學習xdoclet 發(fā)現(xiàn)是很有用的。易于規(guī)范,使用方便;
          參考: http://blog.easyjf.com/html/blog/20061127/3290288676803397.htm
          官方完整API: Template Language (*.xdt)

          因為參考中:是還是比較復雜的例(數(shù)本人愚鈍^_^)特留一文:
          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>

          在運行上面文件時候動態(tài)輸入?yún)?shù)
          ?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> 循環(huán)查找
          ?
          ? 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);
          }






          主站蜘蛛池模板: 湖北省| 任丘市| 天台县| 四平市| 辽中县| 新源县| 阳曲县| 神农架林区| 靖宇县| 阳城县| 巩留县| 阿鲁科尔沁旗| 大邑县| 涡阳县| 旌德县| 疏附县| 长顺县| 资溪县| 静宁县| 平舆县| 延边| 珠海市| 甘德县| 密山市| 通江县| 娱乐| 武平县| 昌都县| 台中县| 门头沟区| 宁德市| 衢州市| 五指山市| 黔南| 灵石县| 安平县| 云林县| 贵阳市| 子长县| 周口市| 定安县|