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






    主站蜘蛛池模板: 亚洲精品一二三区| 又爽又高潮的BB视频免费看| 99久9在线|免费| 日本免费在线观看| 男人的天堂网免费网站| 精品国产麻豆免费人成网站| 中文字幕免费视频精品一| 国产免费黄色无码视频| 水蜜桃视频在线观看免费播放高清 | 中国一级特黄的片子免费| 一级一黄在线观看视频免费| 免费的黄色网页在线免费观看| 无人视频在线观看免费播放影院| 高潮内射免费看片| 九九九国产精品成人免费视频| 亚欧洲精品在线视频免费观看| 一级做a爰全过程免费视频毛片| h视频在线观看免费| a毛片免费全部播放完整成| 美女被cao网站免费看在线看| 日本免费一区二区三区 | 久久99精品免费一区二区| 久青草视频在线观看免费| 成全视频高清免费观看电视剧| 无码一区二区三区免费| ww在线观视频免费观看| 成人A级毛片免费观看AV网站| 在线观看国产情趣免费视频 | a拍拍男女免费看全片| 免费可以在线看A∨网站| 国产成人免费永久播放视频平台| 免费人成在线观看播放国产 | 亚洲精品国自产拍在线观看| 一本色道久久综合亚洲精品高清| 国产精品亚洲аv无码播放| 久久精品a亚洲国产v高清不卡| 亚洲人成网国产最新在线| 人人鲁免费播放视频人人香蕉| 在线观看片免费人成视频无码| 69av免费视频| 亚洲国产精品成人久久蜜臀 |