Ant工具的使用和说明

系统 1770 0

Ant是什么

Ant是Apache的一个开源项目。它是一个跨平台的工具,主要用于项目项目的自动编译和打包和测试等。

Ant的优点

1.与平台无关,因为它是基于JAVA开发的。

2.脚本格式是基于XML,维护起来相对简单。

Ant的安装

1.在Apache的官网下载

    http://www.apache.org/dist/ant/binaries/  选择最新的 apache-ant-1.7.1-bin.zip

2.解压安装

   解压到本机目录,如D:Ant

   1.运行----cmd

   2.配置环境变量

         set JAVA_HOME=JDK安装路径

         set ANT_HOME = D:Ant (Ant的安装路径)

   3.配置系统变量

         set PATH=%PATH%;%JAVA_HOME%\bin;%ANT_HOME%\bin

         注意,一定要加上 %PATH%;

    4.测试

         直接在cmd窗口中输入ant -version,然后回车即可看到当前ant的版本信息

Ant的基本元素

 Ant是基于XML文件编写的,默认使用的文件为build.xml。下面拿一个简单的HelloWorld示例来演示。

    1.E:build.xml如下:

          

    <?xml version="1.0" ?>
<project name="HelloWorld">
     <target name="test">
          <echo message="Hello,World!" />
     </target>
</project>
  

    2.cmd----进入E盘----运行ant test--出现以下提示:        

            Buildfile: build.xml

            test:
                [echo] Hello,World!

            BUILD SUCCESSFUL
            Total time: 0 seconds

如果配置文件不是build.xml,而是test.xml,此时需要在ant后面加上一个参数ant -f test.xml test,-f 后面带的参数就是配置文件的文件名。

Ant配置文件关键属性的解析

1.project

    project是Ant文件的根元素,必须包含至少一个project。在project下可以包含多个target。

    它主要有以下属性

       1) name

              用来指定project元素的名称

       2)default

              定义ant命令默认执行的target

       3)basedir

              用于指定运行的基本路径信息。若未定义则为ANT_HOME

     修改上面的build.xml,如下:

 

    <?xml version="1.0" ?>
<project name="HelloWorld" default="test1" basedir="D:wsdl">
     <target name="test">
          <echo message="Hello,World!" />
     </target>
     <target name="test1">
          <echo message="Hello,${basedir}" />
     </target>
</project>

  

 

    cmd---E:-----ant--回车显示: 

        Buildfile: build.xml

        test1:
            [echo] Hello,D:\wsdl

            BUILD SUCCESSFUL
        Total time: 0 seconds

     从结果很明显可以看出名字为test的target并没有执行,执行的是default定义的test1。而basedir属性也打印出来了,为D:\wsdl。注意:属性值的取法为${属性名}

2.target

   target是Ant执行的任务单元,一个target里有一个或者多个任务。

   它主要有如下属性:

        1)name

              定义target的名字,这个名称在一个project中是唯一的。ant可以根据target的name来定位target。

        2)depends

             当targetA的执行需要targetB的运行结果时,可以定义targetA依赖于targetB,执行时B会先执行。

        3)if

             判断属性是否存在,存在则执行target,否则不执行。

        4)unless

             与if相反,判断属性是否不存在,不存在执行target,否则不执行。

        5)description

             对当前target的描述

       修改上面的build.xml文件如下:

              

    <?xml version="1.0" ?>
<project name="HelloWorld" default="test1" basedir="D:wsdl">
     <target name="test">
          <echo message="Hello,World!" />
     </target>
     <target name="test1" depends="test" if="t" description="this is test1">
          <echo message="Hello,${basedir}" />
     </target>
</project>
  

 

    cmd --- E:----ant---回车显示:

      Buildfile: build.xml

      test:
         [echo] Hello,World!

      test1:

      BUILD SUCCESSFUL
      Total time: 0 seconds

    因为test1依赖于test,所以会先执行test,由于t这个属性并不存在,所以test1不会执行。如果将上面的if改成unless,则test1和test都会执行。

3.property

      property是用来定义属性名称及属性值的。它有两种方式定义,第一种直接在build.xml文件中定义;第二种是在外部属性文件里定义,然后在build.xml中引入。如test.properties,引入 <property file=” test.properties”/>。test.properties的格式为name=value。

       修改上面的build.xml文件如下:

 

    <?xml version="1.0" encoding="UTF-8"?>
<project default="test" basedir=".">	
        <property file="build.properties" />
        <property  name ="name"  value ="fer2005"/> 
        <property  name ="age"  value ="30"/> 
	<target name="classes">
		<echo message="name:${name} age:${age}" />
	</target>	
</project>
  

    运行显示:

          Buildfile: build.xml

          test:
              [echo] name:fer2005 age:30

          BUILD SUCCESSFUL
          Total time: 0 seconds

Ant的主要任务

          1.echo

             输出信息,有四个属性:message file append level

              message:需要打印的消息

              file:需要将打印的信息放入哪个文件

              append:是否将消息追加到文件末尾,true追加,false则直接替换

              level:消息输出的控制级别,有info,warning,error

          修改build.xml文件如下:

             

    <?xml version="1.0" encoding="UTF-8"?>
<project default="test" basedir=".">	
        <property file="build.properties" />
        <property  name ="name"  value ="fer2005"/> 
        <property  name ="age"  value ="30"/> 
	<target name="test">
		<echo message="name:${name} age:${age}" />
		<echo message="this is a echo test" file="test.txt" append="true" />
	</target>	
</project>

  

         运行,然后结果在E:test.txt中去查看。可以看见在test.txt中有this is a echo test。重新运行一次,则会有两个this is a echo test。若将append属性去掉重新运行则又只有一个this is a echo test了。

          2.mkdir

               新建目录,只有一个属性

                dir:定义新建的文件夹名称。

               

       <mkdir dir="test" />
  

             3.delete

                 删除目录或文件,有四个属性

                 file:所要删除的文件

                 dir:只有找一个属性时,删除指定的目录

                 includeEmptyDirs:是否包含空目录

                 includes:包含何种类型的文件,可以使用通配符,与windows系统中的搜索功能相似。

                 修改build.xml如下:

 

    <?xml version="1.0" encoding="UTF-8"?>
<project default="test" basedir=".">		
	<target name="test">
		<delete includeEmptyDirs="true" dir="." includes="*.txt"></delete>
	</target>
</project>

  

 

              删除当前目录下的空目录和所有txt文件。

              也可以写成这种格式:

                   

    <?xml version="1.0" encoding="UTF-8"?>
<project default="test" basedir=".">		
      <target name="test">
           <delete includeEmptyDirs="true"> 
               <fileset dir="." includes="*.txt"/> 
           </delete>
      </target>
</project>

  

 

 

            4.copy

                复制文件或目录,主要有四个属性

                   file:需要复制的文件

                   tofile:复制好的新文件

                   dir:需要复制的目录

                   todir:复制到新的目录

               复制文件               

    <copy file="build.xml" tofile="test.xml"></copy>
  

                复制目录

      <copy todir="../testnewdir"> 
            <fileset dir="testsrcdir"/> 
  </copy>

  

                复制文件到目录 

    <copy file="test.txt" todir="../newdir"/>
  

 

              5.move

 

                   移动文件或目录,与copy类似

         移动单个文件(重命名):                    

    <move file="srcfile" tofile="newfile"/>
  

                    

          移动文件到另一目录:

     <move file="srcfile" todir="newdir"/>
  

  移动目录:        

    <move todir="newdir"> 
           <fileset dir="srcdir"/> 
</move>

  

 

 利用Ant对Java程序的编译和打包

   1.Java程序编译

           javac命令

           使用方法如下:

           IDE:Eclipse

            1.新建Java工程。如TestAnt

            如图所示:

                      新建Java工程的结构图

                  2.新建类Test.java

                      

    package com.fer2005.test;

public class Test {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("this a test class");
	}
}
  

 

                 3.在工程TestAnt目录下新建build.xml文件

                    

    <?xml version="1.0" encoding="UTF-8"?>
 <project  name ="TestAnt" default ="compile"  basedir ="."> 
     <target  name ="clean"> 
        <delete  dir ="build"/> 
     </target> 
     <target  name ="compile"  depends ="clean"> 
        <mkdir  dir ="build/classes"/> 
     <javac  srcdir ="src"  destdir ="build/classes"/> 
     </target> 
</project > 
  

               执行compile前必须先删除build文件夹,然后通过mkdir建立文件夹,javac编译当前程序,保存的路径是build下的classes目录下。   

               4.在build.xml上右键Run As---Ant Build

               5.刷新工程,即可看见生成文件夹和class文件。如图所示:

                      javac后的工程目录结构

 

               java命令

                    运行程序,执行类中的main方法。修改build.xml:

                         

    <?xml version="1.0" encoding="UTF-8"?>
<project name="TestAnt" default="run" basedir=".">
	<target name="clean">
		<delete dir="build" />
	</target>
	<target name="compile" depends="clean">
		<mkdir dir="build/classes" />
		<javac srcdir="src" destdir="build/classes" />
	</target>
	<target name="run" depends="compile">
		<java classname="com.fer2005.test.Test">
			<classpath>
				<pathelement path="build/classes" />
			</classpath >
		</java >
	</target >
</project >
  

                  然后按上面的方法Ant build,打印出如下信息:

                        Buildfile: D:\workspace\TestAnt\build.xml
                             clean:
                                    [delete] Deleting directory D:\workspace\TestAnt\build
                             compile:
                                    [mkdir] Created dir: D:\workspace\TestAnt\build\classes
                                    [javac] Compiling 1 source file to D:\workspace\TestAnt\build\classes
                             run:
                                    [java] this a test class
                         BUILD SUCCESSFUL
                         Total time: 641 milliseconds

                        jar

                        对java工程进行打包,修改build.xml:

                       

    <?xml version="1.0" encoding="UTF-8"?>
<project name="TestAnt" default="jar" basedir=".">
	<target name="clean">
		<delete dir="build" />
	</target>
	<target name="compile" depends="clean">
		<mkdir dir="build/classes" />
		<javac srcdir="src" destdir="build/classes" />
	</target>
	<target name="run" depends="compile">
		<java classname="com.fer2005.test.Test">
			<classpath>
				<pathelement path="build/classes" />
			</classpath >
		</java >
	</target >
	<target name="jar" depends="run">
		<jar destfile="TestAnt.jar" basedir="build/classes">
			<manifest>
				<attribute name="Main-class" value="com.fer2005.Test" />
			</manifest >
		</jar >
	</target>
</project >
  

 

                     运行完成后可以看见生成的jar包。

 

            2.Java Web 工程的编译和打包

                1.新建一个web工程,结构图如下:

 

                            web工程结构

                      2.修改build.xml

                             

    <?xml version="1.0" ?>
<project name="TestAnt" default="war" basedir=".">
	<target name="clean">
		<delete dir="build" />
	</target>
	<target name="compile" depends="clean">
		<mkdir dir="build/classes" />
		<javac srcdir="src" destdir="build/classes" />
	</target>
	<target name="run" depends="compile">
		<java classname="com.fer2005.test.Test">
			<classpath>
				<pathelement path="build/classes" />
			</classpath >
		</java >
	</target >
	<target name="jar" depends="run">
		<jar destfile="TestAnt.jar" basedir="build/classes">
			<manifest>
				<attribute name="Main-class" value="com.fer2005.Test" />
			</manifest >
		</jar >
	</target>
	<target name="war" depends="jar">
		<war  destfile ="build/TestAntWeb.war"  webxml ="WebRoot/WEB-INF/web.xml"> 
		     <fileset  dir ="WebRoot"  includes ="**/*.jsp"/> 
		            <lib  dir ="WebRoot/WEB-INF/lib"/> 
		            <classes dir="build/classes"/> 
		        </war> 
		</target>
</project >

  

 

                       war

                              destfile:生成的war包的路径和文件名

                               webxml:web工程的配置文件web.xml所在路径

                               <fileset  dir ="WebRoot"  includes ="**/*.jsp"/> :打包webroot下的所有jsp文件

                               lib:包所在的路径

                               classes:JAVA编译后的类文件路径。

                   3.运行即可得到war包TestAntWeb.war。

                   4.将TestAntWeb.war放到%TOMCAT_HOME%\webapps下,启动tomcat测试war包是否可用。

   

 

 

 

Ant工具的使用和说明


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论