<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    xdoclet 代碼生成

    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);
    }






    主站蜘蛛池模板: 亚洲成A∨人片在线观看无码| 久久亚洲国产中v天仙www| 亚洲欧洲国产成人精品| 野花香高清视频在线观看免费| 亚洲人成无码久久电影网站| 老司机免费午夜精品视频| 日本一道一区二区免费看 | 国产精品亚洲专区在线播放| 免费视频淫片aa毛片| 亚洲av无码专区在线观看下载| 天天拍拍天天爽免费视频| 亚洲国产成人手机在线观看| 国产在线19禁免费观看| 免费无码国产V片在线观看| 2048亚洲精品国产| 在线看片免费人成视频福利| 中文字幕亚洲色图| 美女视频黄a视频全免费| 国产午夜亚洲精品国产| 精品久久久久久久免费人妻| 337P日本欧洲亚洲大胆艺术图| 亚洲国产精品综合久久网络| 黄色视频在线免费观看| 亚洲第一视频网站| 免费观看的毛片大全| 小说区亚洲自拍另类| 亚洲人成伊人成综合网久久久| 182tv免费视视频线路一二三| 亚洲日韩国产一区二区三区在线| 一级毛片直播亚洲| 日本黄色动图免费在线观看| 亚洲一区电影在线观看| 免费人成激情视频| 国产无遮挡裸体免费视频在线观看| 亚洲成AV人片久久| 免费在线观看理论片| 免费看黄的成人APP| 在线亚洲午夜片AV大片| 亚洲精品国产综合久久一线| 99久久99热精品免费观看国产| 亚洲人AV在线无码影院观看|