下载ant包,解压版,解压到某目录后配置环境变量即可,这里不在赘述。配置成功cmd ant-version,显示ant版本即OK。

    

      ant是Apache的跨平台的构建工具,他可以实现项目的自动构建和部署等功能。

 

    ant最主要就是build.xml文件,这个文件一般放到项目的根目录中,和src同级,当然可以取其他名字,默认为build.xml。

    cmd到项目目录下,执行命令ant即可。如果为hello.xml,执行ant -f hello.xml 或ant -file hello.xml或ant -buildfile hello.xml

 

    build.xml中的配置

 

    根元素为<project>元素,name属性指定project的名称,default属性指定默认执行target的名称,basedir属性用于指定基路径的位置,该属性没有指定时,使用ant的构建文件的附属目录作为基准目录。若想得到所有target的名称,可以加上参数-projecthelp。

<?xml version="1.0"?><projectname="projectStudy"default="sayBaseDir"basedir="E:"apache-ant-1.7.0"><targetname="sayBaseDir"><echomessage="The base dir is: ${basedir}"/></target></project>

    target元素是ant的基本执行单元,它可以包含一个或多个任务。多个target相互依存,用depends属性控制。

         name属性:target元素的名称,在project中唯一。

         depends属性:用于描述target之间的依赖关系,若多个target共存用逗号隔开。ant会按照depends中出现的顺序来执行。

         if属性:验证target中某个属性是否存在,不存在就不执行。

         unless属性:与if属性相反,用于验证指定的属性是否存在,若不存在target将执行。

         description属性:target属性的简短描述和说明。

<?xml version="1.0"?><projectname="targetStudy"><targetname="targetA"if="ant.java.version"><echomessage="Java Version: ${ant.java.version}"/></target><targetname="targetB"depends="targetA"unless="amigo"><description> a depend example!</description><echomessage="The base dir is: ${basedir}"/></target></project>

         property元素,该元素为参数的参量或者参数的定义,project的属性可以通过property元素来设定,也可以在ant之外设定,一般都在ant之外使用properties元素设定,然后用ant引入文件。<property file="build.properties"/> 。property元素可以用作task的属性值,存在${}里,并放到task的位置来实现。ant提供一些内置属性,和System.getprerties()方法得到的参数相同,这些属性可以参照sun网站的说明。

               basedir:project基项目的绝对路径。

              ant.file:buildpath的绝对路径。

              ant.version:ant的版本。

              ant.project.name:当前指定的project的名字,即project的name。

              ant.java.version:ANT检测到的jdk的版本。

         

     ant的常用任务:

         copy任务:文件和目录的复制。

         delete任务:文件或目录的删除。

         mkdir任务:创建目录。

         move任务:移动文件或目录。

         echo任务:根据日志或者监控级别输出信息。

         编译、运行、生成jar文件、生成war文件。

 

         copy任务:

              copy单个文件:<copy file="file.txt" tofile="copy.txt"/>

              复制文件目录:

              

<copy todir="../newdir/dest_dir">
 
 
     
       
       
       
      <fileset dir="src_dir"/> 
  
 
 
     
       
       
      </copy> 
   
       
       
      将文件复制到另外的目录: 
  
 
 
     
       
       
      <copy file="a.txt" todir="../newdir/dest_dir"/>

         delete任务:

              删除单个文件:<delete file="photo/addd.jpg"/>

              删除某个目录:<delete dir="photo"/>

              删除所有备份目录和空目录:

                

<delete includeEmptyDirs="true"> 
  
 
 
     
       
       
       
       
      <fileset dir="." includes="**/*.bak"/> 
  
 
 
     
       
       
      </delete> 
       
      mkdir任务: 
  
 
 
     
       
      创建文件夹:<mkdir dir="build"/>

         move任务:

              移动单个文件:<move file="fromfile" tofile="tofile"/>

              移动单个文件到另一目录:<move file="fromfile" todir="movedir"/>

              移动某个目录到另一目录:

                

<move todir="movedir">
 
 
     
       
       
       
       
      <fileset dir="olddir"/> 
  
 
 
     
       
       
      </move>

         echo任务:

              根据日志或监控器的级别输出信息。包含message、file、append和level四个属性,举例如下:

             

<echo message="Hello,Amigo" file="logs/system.log' append="true" />

         javac编译文件:

           

<javac srcdir="src" destdir="build/classes"/> 
  
 
 <?xml version="1.0"?><projectname="javacTest"default="compile"basedir="."><targetname="clean"><deletedir="build"/></target><targetname="compile"depends="clean"><mkdirdir="build/classes"/><javacsrcdir="src"destdir="build/classes"/></target></project>

         java运行文件:

             

<java classname="HelloWorld"> 
       
       
       
      <classpath> 
  
 
 
     
       
       
       
       
      <pathelement path="build/classes"/> 
  
 
 
     
       
       
      </classpath> 
  
 
 
     
       
      </java> 
  
 
 <?xml version="1.0"?><projectname="javaTest"default="jar"basedir="."><targetname="clean"><deletedir="build"/></target><targetname="compile"depends="clean"><mkdirdir="build/classes"/><javacsrcdir="src"destdir="build/classes"/></target><targetname="run"depends="compile"><javaclassname="HelloWorld"><classpath><pathelementpath="build/classes"/></classpath></java></target></project>

         打jar包:

<targetname="jar"depends="run">    <jardestfile="helloworld.jar"basedir="build/classes">

<manifest>
<attributename="Main-class"value="HelloWorld"/>
</manifest>
</jar>

</target>

         打war包:

<!-- 打war包--><targetname="war"depends="compile"> <wardestfile="${build}/antwebproject.war"webxml="WebRoot/WEB-INF/web.xml"><!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹--> <filesetdir="WebRoot"includes="**/*.jsp"/>                   <!-- 拷贝lib目录下的jar包-->                <lib dir="${lib}"/>                 <!-- 拷贝build/classes下的class文件-->                 <classesdir="${classes}"/>        war></target>