`

转载:《ant & Xdoclet 》

阅读更多
转载自:http://blog.csdn.net/liusha0007/article/details/3840715

声明:本人转载只为分享,如涉及商业版权纠纷,请及时与本人联系,必将立即删除,造成不便,还望见谅,谢谢。

采用ant主要是为了批量机器处理,避免笔误,只有维护一条代码即可。

ant

Ant是什么?

Ant是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简易的方式来构建整个项目。Ant究竟能做什么呢?这取决于Ant的任务(Task),Ant有哪些任务,就能完成哪些工作!一些典型的任务是:编译java源代码、运行java程序、拷贝文件或目录、将编译完成的类打包等等。

         当然,Ant是一个开放的架构,任何人,都可以按照自己的方式,添加自己的任务(Task),这需要遵守Ant的一些规范。

如何开始使用Ant?

1、  确保你的机器已经安装了JDK,确保你的path环境变量中包含有java虚拟机的运行程序,确保你的环境变量中有JAVA_HOME变量

2、  下载ant并解压

3、  设置ANT_HOME环境变量,指向ant解压根目录

4、  在path环境变量中,添加ANT_HOME/bin目录

5、  打开控制台,运行:ant

6、  如果能够运行ant(忽略这些异常:Buildfile: build.xml does not exist!),而不是出现诸如命令无法解释的错误,那么你的ant就安装成功了

Ant 的基本概念

Ant的运行,靠的是一个构建脚本,默认的名称叫build.xml,如果你在任何目录下运行ant命令,Ant将自动查找当前目录下有没有build.xml文件,如果有这个文件,就读取这个文件,并运行其中的默认target。

解释一下以上话的意思:

构建脚本

Ant根据构建脚本的描述来执行任务!构建脚本是一个xml格式的文件。最简单的构建脚本是:

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

<project name="测试脚本" default="copyfile" basedir=".">

    <target name="copyfile">

       <copy file=”d:/a.txt” todir=”c:/temp” overwrite=”true”/>

    </target>

</project>

如果把以上内容放到一个build.xml文件中,然后运行ant命令,Ant将执行拷贝文件的任务!

(注:把build.xml复制到d盘。然后从命令窗口进入d:盘 然后运行ant)

从这个最简单的构建脚本中,我们可以知道脚本的基本编写方法:

1、 脚本的根元素是:<project>

2、 所有的任务,必须通过一个<target>标签包围,一个<target>标签,可以包含多个任务。

3、 <copy>标签描述了一个任务,这些任务必须放到一个<target>标签的内部,Ant都可以使用哪些任务呢?请参考Ant的相关文档

4、 <project>中可以包含多个<target>,如果不指定运行哪个任务(即直接运行ant命令),那么,将使用<project>标签中指定的default属性的target。

构建脚本的命名

默认命名是build.xml,如果你的构建脚本的名称是build.xml,那么你可以直接运行ant命令,如果是其它的名称,如:mybuild.xml,那么,你的命令行应该改为:ant –f mybuild.xml。

运行特定任务?

运行:ant copyfile,将运行的是被命名为copyfile的target。

Ant的路径模式?

再看下面的ant构建脚本:

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

<project根元素 name="测试脚本"名称 default="copyfile"默认缺省的target basedir="."路径的基于什么(可以是相对路径)>

    <target name="copyfile">

       <copy任务 todir=”c:/temp” overwrite=”true”>

           <fileset dir=”d:”>

              <include name=”*.txt”/>

           </fileset>

       <copy>

    </target>

</project>

有没有注意到这个文件,跟第一个文件的变化?没错,<copy>任务的file属性变了,现在是*.txt,可能你已经意识到,这个的意思是拷贝d:盘下所有的以txt为扩展名的文件到c:/temp目录中。完全正确!但是,究竟包不包含子目录下的txt文件呢?这就需要我们了解ant中的路径模式。Ant中的路径模式非常重要,很多地方都会用到,所以,我们首先来学习的就是ant的路径模式!



你可以查看ANT_HOME/docs/manual/dirtasks.html#patterns下的文档描述!里面有最详细的说明。



简单归纳一下:



*符号,代表0个或若干个字符。?符号,代表一个字符。

**代表一颗目录树。

Ant任务

Ant 有很多内置的(即你安装完ant之后就可以直接使用的任务)任务,但是也可以添加自己定义的任务。如果你编写了自己的任务,或者你要引入一些不是ant自带的任务时,我们需要使用<taskdef>标签来定义:

比如:

   <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"

    />

在这段文本里,包含了很多内容:

1、<path>元素,是用来定义一个路径的,通常是定义classpath,因为classpath可以包括众多的jar包,也可以包括众多的目录,所以可以使用<fileset>标签或<pathelement>等标签来定义这些路径。

2、这些标签总体上来说都是轻易便能够看懂的。无需过多的解释。那个<include>标签中的name属性,正是一个路径模式,表示包括本目录(即dir 属性定义的目录。)下的所有子目录中的jar文件。



定义完任务之后,就可以来使用它了,如:



    <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>

具体如何使用,请参考关于这个task的相关说明文档。















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=".">

     定义相关属性,下面通过${src.dir}可以调用

   <property name="src.dir" value="${basedir}/src"/> 源文件应用的目录

   <property name="build.dir" value="${basedir}/bin"/>build应用的目录

    <property name="webapp.dir" value="${basedir}/WebRoot"/>web应用目录







xdoclet解压目录起






变量名字随便起

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




   <!-- Build classpath -->

   <path id="xdoclet.task.classpath">构建类路径,不用改

         <fileset dir="${xdoclet.home}/lib">引用所有jar包

         <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构建脚本。我们努力来理解这个文件把:

(注:在web下建立build.xml文件,然后将上面方框内文件配置复制到这个文件中)

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的使用手册!!





(注:在eclipse里面ant窗口下添加ant文件)
分享到:
评论

相关推荐

    J2EE Development with J2EE Ant & Xdoclet

    J2EE Development with J2EE Development with Lawrence Plomann January 21, 2003 Chicago Java User Group Ant & Xdoclet Ant & Xdoclet

    Ant集合Xdoclet 实例教程(之整合 Spring)

    在Java开发领域,Ant和Xdoclet是两个重要的工具,它们在构建自动化和元数据注解方面发挥着关键作用。本教程将详细讲解如何将Ant与Xdoclet整合,以便在Spring框架中利用元数据自动生成配置文件,提高开发效率。 Ant...

    Ant结合Xdoclet 实例教程(之整合 Hibernate)

    6. **构建项目**:Ant还可以负责编译Java源代码,打包成JAR或WAR文件,甚至可以执行单元测试和部署操作。 7. **附录说明**:附录通常会包含更详细的配置示例、常见问题解答和最佳实践,帮助开发者更好地理解和应用...

    Ant+XDoclet生成hbm文件

    在IT行业中,Ant和XDoclet是两个非常重要的工具,特别是在Java领域,它们在构建自动化和元数据驱动的开发中发挥着关键作用。本篇文章将详细介绍如何使用Ant和XDoclet来生成Hibernate的HBM(Hibernate Mapping)文件...

    Ant结合Xdoclet 实例教程(之整合 struts)

    在Java开发领域,Ant和Xdoclet是两个非常重要的工具,它们在自动化构建和元数据注解方面发挥着关键作用。本教程将详细介绍如何利用Ant和Xdoclet进行Struts框架的整合,以实现项目的自动构建和代码生成,从而提高开发...

    xdoclet1 xdoclet1 spring3.0.5、struts1.3、struts2.1、 servlet

    XDoclet可以通过你在java源代码中的一些特殊的注释信息,自动为你生成配置文件、源代码等等,例如web、ejb的部署描述文件、config.xml配置文件、javascript校验等。本资源我在学习xdoclet过程中,总结完成的xoclet...

    Xdoclet入门基础教程

    Xdoclet 可以与其他工具集成,如 Ant、Maven 等,用于自动化构建和部署 Java 项目。 Xdoclet 的基本概念 Xdoclet 的核心概念是使用特殊的注释来标记 Java 代码。这些注释可以是 @hibernate.class、@hibernate.id、...

    xdoclet-bin-1.2.1.zip

     目前的版本可以为web、ejb、struts、webwork、hibnaate、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。  展开XDoclet的发布包,samples目录下有直接可以运行的...

    xdoclet-base-locale-1.2.1.jar

     目前的版本可以为web、ejb、struts、webwork、hibnaate、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。  展开XDoclet的发布包,samples目录下有直接可以运行的...

    使用Ant进行java开发

    7. Ant与其他技术的集成:Ant不仅限于Java项目,它也可以和其他技术或工具进行集成,如XML处理、Web服务的开发、数据库操作等,从而支持更为复杂的应用场景。 8. 自定义Ant任务:Ant允许用户通过Java编写自定义任务...

    xdoclet-1.2.6.jar

    《XDoclet:Java开发中的自动化文档生成利器》 XDoclet,这个名称或许对一些资深的Java开发者来说并不陌生,它是一个强大的自动化工具,由Rickard Oberg在EJBDoclet的基础上发展而来。EJBDoclet是早期的一个用于...

    xdoclet-bin-1.2.3

    XDoclet可以通过Ant任务(tasks)集成到Ant构建脚本中,使得在编译Java源代码的同时,可以自动执行文档生成和代码自动生成的任务。 3. **版本1.2.3的重要性** 版本号1.2.3代表了XDoclet的稳定版本,通常意味着该...

    struts+hibernate+spring+xdoclet+ant+log4j

    Struts、Hibernate、Spring、XDoclet、Ant和Log4j是Java开发中常见的六个重要组件,它们在企业级应用开发中发挥着关键作用。这些技术的整合为开发者提供了高效、灵活和可维护的解决方案。 **Struts** 是一个基于MVC...

    xdoclet in action 中文版

    3. **创建自定义XDoclet任务**:除了模板和标签,XDoclet还支持自定义任务,这些任务可以是Ant构建脚本的一部分,用于执行更复杂的代码生成操作。通过创建自定义任务,开发者可以构建出更符合项目需求的代码生成流程...

    XDoclet入门教程

    通过这个`build.xml`文件,我们可以执行Ant任务来运行XDoclet,并生成所需的配置文件。 #### 五、总结 XDoclet提供了一种简便的方式来自动化生成Java项目的配置文件和源代码,极大地简化了开发流程,提高了开发...

    ant+hibernate+xdoclet源码,文档,工具包.rar

    标题中的"ant+hibernate+xdoclet"是一个经典的Java开发框架组合,用于高效地构建企业级应用的持久层。Ant是Apache软件基金会的一个开源项目,是一个强大的构建工具,能够自动化构建过程,如编译、打包和测试。...

    xdoclet-1.2.1.zip

    XDoclet是一个在Java开发中广泛使用的开源工具,主要用于自动生成文档、代码和部署描述符。这个工具在早期的Java EE(当时称为J2EE)时代尤其流行,因为它能够自动根据注解(annotations)生成EJB(Enterprise ...

    xdoclet-src-1.2.1.zip eclipse

    《XDoclet与Eclipse:源码解析及应用》 XDoclet,作为一个历史悠久的Java开发工具,曾经在Java EE应用程序开发中占据了重要的地位。它是一款基于Java文档注解(Javadoc)的代码生成器,能够自动生成企业级应用所需...

    XDOCLET的使用例子

    通过在Ant构建文件(build.xml)中配置XDoclet任务,开发者可以指定要处理的源代码目录、生成的目标目录以及需要生成的文件类型。Ant的任务执行机制使得XDoclet的运行自动化,方便在大型项目中集成到持续集成流程中...

    xdoclet-plugins-dist-1.0.4

    - 安装并配置XDoclet环境,包括JDK、Ant(通常作为构建工具)和XDoclet库。 - 运行XDoclet,它会扫描源代码,解析注释,并根据这些信息生成相应的文件。 - 验证生成的文件是否正确,更新到项目中。 6. 现代替代...

Global site tag (gtag.js) - Google Analytics