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






    主站蜘蛛池模板: 久久亚洲精品国产精品黑人| 精品国产免费一区二区三区| 亚洲爆乳无码专区| 国产精品国产自线拍免费软件| 一级特黄aa毛片免费观看| 无人视频在线观看免费播放影院| 亚洲香蕉在线观看| 亚洲一区免费观看| 国产亚洲免费的视频看| 免费日本黄色网址| 免费观看一级毛片| 成人性生交大片免费看无遮挡| 久久99国产综合精品免费| 视频免费在线观看| 国产免费久久精品99久久| 免费大片av手机看片高清| 另类小说亚洲色图| 亚洲A∨精品一区二区三区下载 | 一区二区三区免费视频观看| 亚洲GV天堂无码男同在线观看| 精品丝袜国产自在线拍亚洲| 亚洲欧洲尹人香蕉综合| 亚洲无线电影官网| 亚洲国产成人久久精品动漫| 久久精品国产亚洲AV果冻传媒| 亚洲日韩小电影在线观看| 亚洲精品乱码久久久久久| 亚洲综合图色40p| 亚洲乱亚洲乱妇无码麻豆| 亚洲中文字幕无码一区| 亚洲日韩激情无码一区| 亚洲国产精品一区二区成人片国内 | 日韩伦理片电影在线免费观看| 毛片在线看免费版| 岛国大片免费在线观看| 午夜免费福利在线观看| 国产婷婷高清在线观看免费 | 羞羞视频网站免费入口| 免费高清A级毛片在线播放| 又硬又粗又长又爽免费看 | 你懂的免费在线观看网站|