xdoclet介紹

Xdoclet 基本概念

我們可以在 java 代碼中使用類似於 javadoc 的註釋,來表達更多的內容。這些額外的註釋,通過使用 xdoclet 工具,我們可以將它們轉換爲我們需要的各種配置文件。先看一個簡單的例子:

比如有一個 java 文件的源代碼如下:

/**

  * @hibernate.class

  *          table="T_Party"

  */

public class Party {

      

       /**

         * @hibernate.id

         *          generator-class="native"

         */

       private int id;

      

       /**

         * @hibernate.many-to-one

         *          column="parentid" 

         */

       private Party parent;

      

       /**

         * @hibernate.set

         * @hibernate.key

         *   column = "parentid"

         * @hibernate.one-to-many

         *          class = "com.bjsxt.oa.model.Party"     

         */

       private Set children;

      

       /**

         * @hibernate.property

         *          column="thename"

         */  

       private String name;

      

       /**

         * @hibernate.property

         */

       private String sn;

      

       /**

         * @hibernate.property

         */

       private String description;

      

       /**

         *

         * @return

         */

       public Set getChildren() {

              return children;

       }

       public void setChildren(Set children) {

              this.children = children;

       }

       public String getDescription() {

              return description;

       }

       public void setDescription(String description) {

              this.description = description;

       }

      

       /**

         */  

       public int getId() {

              return id;

       }

       public void setId(int id) {

              this.id = id;

       }

      

 

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

       public Party getParent() {

              return parent;

       }

       public void setParent(Party parent) {

              this.parent = parent;

       }

       public String getSn() {

              return sn;

       }

       public void setSn(String sn) {

              this.sn = sn;

       }

}

 

 

通過 xdoclet ,我們可以得到關於這個類的 Hibernate 映射文件,如下:

<? xml version = "1.0" encoding = "ISO-8859-1" ?>

<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

 

< hibernate-mapping >

  < class table = "T_Party" name = "com.bjsxt.oa.model.Party" >

    < id name = "id" >

      < generator class = "native" />

    </ id >

    < many-to-one column = "parentid" name = "parent" />

    < set name = "children" >

      < key column = "parentid" />

      < one-to-many class = "com.bjsxt.oa.model.Party" />

    </ set >

    < property name = "name" column = "thename" />

    < property name = "sn" />

    < property name = "description" />

  </ class >

</ hibernate-mapping >

 

 

如何開始使用 Xdoclet

Xdoclet 不是單獨可以運行的工具(不像 Ant 工具),它可以與其它工具一起配合運行,如 Ant 。我們下面的例子就是基於 Ant xdoclet 的。

 

1、  首先需要保證 ant 是可用的

2、  下載並解壓 xdoclet 的包(我們現在使用的是 xdoclet2 ,具體版本是 xdoclet-plugins-1.0.3 )。

3、  ant 構建工具中定義 xdoclet 任務,並使用:

<?xml version="1.0" encoding="GBK"?>

<project name= "OA 系統構建腳本 " default= " 生成 Hibernate 配置文件 " basedir= "." >

 

   <property name= "src.dir" value= "${basedir}/src" />

   <property name= "build.dir" value= "${basedir}/bin" />

    <property name= "webapp.dir" value= "${basedir}/src/webapp" />

    <property name= "xdoclet.home" value= "D:/opensources/xdoclet/xdoclet-plugins-1.0.3" />

 

   <!-- Build classpath -->

   <path id= "xdoclet.task.classpath" >

         <fileset dir= "${xdoclet.home}/lib" >

         <include name= "**/*.jar" />

         </fileset>

         <fileset dir= "${xdoclet.home}/plugins" >

         <include name= "**/*.jar" />

         </fileset>

   </path>

    <taskdef

       name= "xdoclet"

       classname= "org.xdoclet.ant.XDocletTask"

       classpathref= "xdoclet.task.classpath"

    />

   

    <target name= " 生成 Hibernate 配置文件 " >

       <xdoclet>

           <fileset dir= "${src.dir}/com/bjsxt/oa/model" >

              <include name= "**/*.java" />

           </fileset>        

           <component

               classname= "org.xdoclet.plugin.hibernate.HibernateConfigPlugin"

              destdir= "${src.dir}"

               version= "3.0"

              hbm2ddlauto= "update"

              jdbcurl= "jdbc:mysql://127.0.0.1/oa_200706"

              jdbcdriver= "com.mysql.jdbc.Driver"

              jdbcusername= "root"

              jdbcpassword= "mysql"

              dialect= "org.hibernate.dialect.MySQLDialect"

              showsql= "true"

           />

       </xdoclet>

    </target>

    <target name= " 生成 hibernate 映射文件 " >

       <xdoclet>

           <fileset dir= "${src.dir}/com/bjsxt/oa/model" >

              <include name= "**/*.java" />

           </fileset>

           <component

               classname= "org.xdoclet.plugin.hibernate.HibernateMappingPlugin"

              version= "3.0"

              destdir= "${src.dir}"

           />

       </xdoclet>

    </target>

</project>

 

 

 

以上就是一個完整的可運行的 ant 構建腳本。我們努力來理解這個文件把:

 

1 <property> 標籤定義一些變量,這些變量可以通過 ${ 變量名 } 的方式引用

2 <path> 標籤定義了類路徑

3 <taskdef> 標籤定義了 xdoclet 任務(因爲 ant 本身肯定是不包含 xdoclet 任務的)

4 、我們在下面的兩個 <target> 中,使用了 <xdoclet> 標籤,這個標籤正是我們自己定義的。

 

Xdoclet 可以幹什麼?

Xdoclet 實際上就是一個自動代碼生成的工具,它可以生成各種各樣的代碼或配置文件(如果你很清楚 xdoclet ,你也可以對它進行擴展)。在默認的情況下, xdoclet 已經給我們提供了很多的解決方案。這些解決方案叫做 plugin ,即插件。在 xdoclet 的官方網站上: http://xdoclet.codehaus.org ,我們可以獲得關於它支持的所有的 plugin 的情況。

 

Xdoclet 通過 plugin 來支持代碼的自動生成。我們要使用 xdoclet ,可以將它定義爲 ant 的一個任務(如上所述)。然後就可以使用 xdoclet 了。在 <xdoclet> 標籤內部使用 xdoclet 。由於 xdoclet 通常用來對源文件進行掃描,並讀取源文件中的註釋,然後再根據這些註釋生成相應的配置文件,所以,通常我們需要定義讓 xdoclet 掃描哪些源代碼文件。對於這個需要,我們通過 <fileset> 標籤來滿足!

 

通過 <component> 標籤,我們可以來使用 xdoclet 的衆多 plugin 。上述例子,我們使用了 xdoclet hibernate 支持的 plugin

具體如何使用這些 plugin ,請參考這些 plugin 的使用手冊!!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章