Ant入门

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\\src1
src2=D:\\study\\ant\\src2
src3=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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值