Ant构建工具之build.xml详解

一、Ant简介
Ant是用来编译/运行/测试java程序,构建、包装和发布过程中几乎每一件事都可以由Ant的任务来处理.比如:优化代码、编译、将工程打包等。Ant是配置基于xml的文件,形成多个任务的目标配置树。


二、Ant管理项目
   当开始一个新的项目时,首先应该编写Ant的构建文件,构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件的默认命名为build.xml,也可以取其他的名字,只不过把这个命名当成参数传递给Ant,构建文件可以放置任何位置,一般是放到项目顶级目录中, 这样可以保持项目的整洁和清晰。下面重点介绍build.xml文件:

build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!--  每个build文件都包含一个project标签.name属性指项目的名称,可以随你自己取.default指默认要执行的target.basedir顾名思义是工作的根目录.
-->
 <!-- 这里的basedir是 工程的目录为根目录  
        一般basedir="."表示的是build.xml文件所在的相对目录为根目录即src   
    -->
 <project name="ant-test" default="run" basedir="../">  
     
      <!--.<property>可以理解为我们写程序时的变量.name是变量的名称 value是变量的值,在下面的脚本要用到这个变量时需要使用${name}方式调用-->
     <property name="src" value="src"/>  
     <property name="dest" value="/${basedir}/WebRoot/WEB-INF/classes"/>  
     <!-- 定义发布目录 把工程copy到tomcat的工作目录下-->  
     <property name="webApp" value="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ant-test"/>  
     <echo message="init ..." />  
     <!-- =================================   
           target: init                
          ================================= -->  
   <!--
   </target>标签是build.xml文件的核心标签.里面主要是写一些你要做的操作然后依次按照你写好的依赖关系逐步执行target.
   name属性是target的名称,depends是它所依赖的target,在执行这个target(例如这里的compile)之前ant会先检查init是否曾经被执行过,
   如果执行过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,然后在执行这个target
   -->
     <target name="init">      
         <mkdir dir="${dest}"/>   
         <delete dir="${src}/classes"></delete>  
     </target>   
     <!-- =================================   
               target: run                
              ================================= -->  
          <!--
       <javac>就是java中的编译命令.srcdir是指需要编译的java文件的目录.destdir是指编译后的class文件存放的目录
   -->
     <!-- 编译class文件-->  
     <target name="compile" depends="init">  
     <!-- <javac srcdir="${src}" destdir="/${basedir}/WebRoot/WEB-INF/classes"></javac> -->  
     </target>   
       
     <target name="run" depends="compile" description="description">  
         <!--除了class文件外,其他文件拷贝到tomcat目录下-->
  <!--
  <copy>这里的两个属性应该很好理解,todir是copy的目标目录 ,overwrite表示是否覆盖.
  <fileset>文件集合.dir属性表示被copy的源文件目录.excludes表示除开什么文件类型之外的文件
  -->
         <copy todir="${webApp}" overwrite="true">  
             <fileset dir="${basedir}/WebRoot" excludes="**/*.class"/>  
         </copy>  
         <!--将class文件打包,放到/WEB-INF/lib目录下--> 
  <!--
  <jar>打成jar包 可以象上面那样写也可以象这样写<jar jarfile="${${webApp}/WEB-INF/lib/test.jar}" basedir="${dest}"/>.
  jarfile表示生成的jar的文件,basedir表示class文件所在的目录.
          当然ant脚本并没有这么简单.要写出一个好的ant脚本,部署一个庞大的项目,需要写出复杂的ant脚本,那是需要我们自己去在项目中运用才能有那种能力的
  -->
         <jar destfile="${webApp}/WEB-INF/lib/test.jar">  
             <fileset dir="/${basedir}/WebRoot/WEB-INF/classes">  
                 <include name="**/*.class" />  
             </fileset>  
         </jar>  
           
     </target>  
  
  
 </project> 

猜你喜欢

转载自huanglz19871030.iteye.com/blog/583046