Ant入门

来源:互联网 发布:淘宝上卖自己做的熟食 编辑:程序博客网 时间:2024/06/05 14:23

1.Ant的安装

  • 在Apache官网下载最新Ant
  • 环境变量设置:
    系统变量:ANT_HOME=d:\ant_home\apache-ant-1.70在
    用户变量:中加入Ant 的bin 目录:path=%ANT_HOME%\bin
  • 测试ant是否安装成功:进入cmd运行Ant.出现如下提示,说明安装成功.
    E:\srcgen\webwork>ant
    Buildfile: build.xml does not exist!
    Build failed

2.Ant入门

Ant的构建文件类型是xml,默认读取的是build.xml文件,如果需要指定文件,可以用如下命令ant –f hello.xml或者ant –file hello.xml或者ant –buildfile hello.xml。下面来一段简单的构建文档。

<?xml version="1.0" encoding="UTF-8" ?><project name="HelloWorld" default="run" basedir=".">    <property name="src" value="src"/>    <target name="init">        <echo message="Hello,init"/>    </target>    <target name="run" depends="init">        <echo message="Hello,run"/>    </target>    <target name="testif" if="src">        <echo message="Hello,if"/>    </target>    <target name="testunless" unless="src">        <echo message="Hello,unless"/>    </target></project>

打开cmd,进入文件所在目录,输入ant run,回车。输出如下图:
运行结果
这里run代表了一个任务,而这个任务又依赖了另外一个任务,所以会先执行init任务。如果不知道target里面定义了哪些可以执行的命令,输入ant -projecthelp会提示出这些命令。
ant -projecthelp
Ant的关键元素project、target、property。
1.project元素
project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。接下来向读者展示一下project元素的各属性。

  • name属性:用于指定project元素的名称。
  • default属性:用于指定project默认执行时所执行的target的名称。例如,本例输入ant也会输出相应结果。
  • basedir属性:用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的所在目录作为基准目录,即’.’。

2.target元素
它为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系。

  • name属性:指定target元素的名称,这个属性在一个project元素中是唯一的。我们可以通过指定target元素的名称来指定某个target。
  • depends属性:用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。
  • if属性:用于验证指定的属性是否存在,若不存在,所在target将不会被执行。
  • unless属性:与if属性相反。
  • description属性:该属性是关于target功能的简短描述和说明。

3.property元素
该元素就是参数的定义,也可以引用文件,引用方法与properties文件完全一样。
all.properties的内容:

src1=D:\\study\\ant\\src1src2=D:\\study\\ant\\src2src3=D:\\study\\ant\\src3

build.xml中的引用:

<property file="all.properties" /><target name="run">    <ant dir="${src1}" target="run" />    <ant dir="${src2}" target="run" />    <ant dir="${src3}" target="run" /></target>

Ant还提供了一些它自己的内置属性:
basedir:project基目录的绝对路径;
ant.file:buildfile的绝对路径,即”${basedir}/build.xml”;
ant.version:Ant的版本,在本文中,值为1.9.1;
ant.project.name:当前指定的project的名字,即project的name属性的值;
ant.java.version:Ant检测到的JDK的版本,在上例运行结果中可看到为1.7。

3.Ant中常用task

  • 输出信息
<echo message=”xxx” />或者<echo>yyyy</echo>
  • 引入一个xml 文件
<import file="../build2.xml"/>
  • 拷贝
<!-- 拷贝文件 --> <copy file="myfile.txt" tofile="mycopy.txt"/><!-- 拷贝一个文件到指定目录 --><copy file="myfile.txt" todir="../some/other/dir"/><!-- 拷贝一个目录集合到指定目录 --><copy todir="../dest/dir">    <fileset dir="src_dir"         excludes="**/*.java"         includes="**/Test.java"/></copy><!-- 拷贝一个目录集合到指定目录并且将文件重命名为.bak --><copy todir="../backup/dir">    <fileset dir="src_dir"/>    <globmapper from="*" to="*.bak"/></copy><!-- 拷贝并替换@TITLE@为Foo Bar --><copy todir="../backup/dir">    <fileset dir="src_dir"/>    <filterset>        <filter token="TITLE" value="Foo Bar"/>    </filterset></copy>

copydir和copyfile与copy具有同样的功能,老版本中的任务,不推荐使用。

<copyfile src="test.java" dest="subdir/test.java"/><copydir src="../resources" dest="${dist}" includes="**/*.java"/>
  • 删除
<!-- 删除文件 --><delete file="/lib/ant.jar"/><!-- 删除目录 --><delete dir="lib"/><!-- 删除指定文件 --><delete>    <fileset dir="." includes="**/*.bak"/></delete><!-- 删除svn文件,svn文件默认是excludes的 --><delete defaultexcludes="false">    <fileset dir="src" includes="**/.svn"/></delete>
  • 剪切
<move todir="some/new/dir">    <fileset dir="my/src/dir">        <include name="**/*.jar"/>        <exclude name="**/ant.jar"/>    </fileset></move>
  • 重命名
<rename src="foo.jar" dest="ant-${version}.jar"/>
  • 替换
<!-- 替换的三种方式:1.直接在属性里面定义好value;2.在replaceFile中定义value;3.利用properties文件中的键值对来定义参数 --><replace file="configure.sh"    value="defaultvalue" propertyFile="source/name.properties">    <replacefilter token="token1"/>    <replacefilter token="token2" value="value2"/>    <replacefilter token="token3" property="property.key"/></replace>
1 0