Ant简介

Apache Ant是一个基于java的构建,生成工具,Another Neat Tool,主要是通过使用build.xml文件,自动地将你的项目拷贝到某个目录,发布项目,或者生成一些代码,执行SQL语句。总之,它可以完成除了开发代码本身之外的大部分辅助性的工作。其实Ant和linux里面的make命令的功能类似。

既然已经有了make,nmake等等工具了,为什么还需要Ant呢? 因为Ant是用java写的,所以具有跨平台的能力。这一点在当今的软件行业可谓是重中之重,因为平台的多样性,跨平台变得必要。Ant的配置文件是xml格式的 (默认情况下这个文件叫做build.xml),这个也使得其跨平台。


安装方法

首先需要注意的一点是,JDK的环境变量必须是事先配置好了的。 然后直接去Apache的网站下载该项目的源代码包,解压到本地磁盘的某个目录,然后在环境变量中添加path的值就可以了,然后就可以在DOS中使用Ant的命令了。

将源代码和其它输入文件转换为可执行文件的形式,定义生成文件之间的依赖关系。

Ant默认读取的文件叫做build.xml,你要使用它的话,就必须构建一个build.xml,然后通过DOS到达那个路径之后,再使用ant命令。当然,也可以使用其它名字的xml文件,只是在使用的时候多指明一个参数就是了。

当你全部都安装好了,你可以运行ant -diagnostics,这样可以打印出Ant的内部状态看看。



1.怎样构建一个简单的build.xml文件?

首先,Ant的buildfile就是一个xml文件,每个buildfile包含一个peoject和至少一个(default) target,targets里面包含task elements,每个element可以有一个id,通过这个id来进行索引,这个id必须是unique的。

1)这个文件是由<project></project>标签作为最外面的标签,每个build.xml文件有且只能有一个project标签。这个标签可以有3个属性,name,default和basedir,但是只有default是必须的,其它的都可选。比如<project name="gasoline" default="init">。所谓的default是一个target,如果执行ant的时候没有指定target的话,那么就执行这一个。


2)然后,第二层的标签是<target></target>,每个target都是由一个或者多个tasks组成的,而task本身就是实际想要执行的操作。比如
<target name="init01">
   <mkdir dir="test" />
</target>

每个target可以独立执行或者依赖于其他target执行完毕才能执行。在定义的时候,可以在name后面再加上depends="init00"之类的语句,意思就是说,当前的这个target是依赖于init00这个target的,要执行当前target之前,先执行init00这个target。

在执行Ant的时候,你可以选择运行哪一个target,如果没有选的话,那么就执行default

3)然后就是具体的task了。

task没有什么标签之类的,就是一段能被执行的代码。每个task都可以包含多个属性。task的基本格式是   <name attribute1="value1" attribute2="value2" ...>,name就是这个task的名字,比如mkdir, delete,也就是要干什么。


4)属性

属性并不是必要的元素,但是可以减轻写build.xml文件的工作量,比如很长的老重复用到的字符串,路径什么的。通常要定义的话还是定义在build.xml文件中,一般都写在project标签内,target标签之外,以全局的形式供所有targets使用。

Ant中的属性类似于编程语言中的变量,由name和value组成。然而不同的是,一旦设定好,Ant的值就不可更改了。

举个例子

<property name="city" value="helsinki" />

定义好了以后要怎样使用它呢?

<mkdir dir="${city}"  />,这个就是使用的格式

这样比较方便修改,如果有很多地方都要用到这样一个值的话,那么定义成property是最好的方式,一次修改,全部都得以更改,减少维护的工作量。


3.编译Java文件的操作


<target name="compile">
     <javac srcdir="${src.dir}" destdir="${dist.classes.dir}" debug="true" encoding="GBK">
           <classpath refid = "classpath" />
    </javac>
</target>

通过这样,就可以将srcdir中的java源文件进行编译,将编译完成后生成的class文件放到destdir中,过程中,需要依赖的jar包都防在classpath中,使用GBK编码方式,把debug的信息也编译进去。

其中,对于classpath的包含方式有很多种,需要用到的时候再去一一详看。

4.复制文件操作

<copy todir="${dist.webapps.dir}/WEB-INF/lib" overwrite="true" flatten="true">
          <fileset dir="${lib.dir}">
                 <include name="*.jar" />
                 <exclude name="j2ee.jar" />
           </fileset>
</copy>

将include里面除了j2ee.jar之外的所有,拷贝到dist.webapps.dir中

当然,还可以进行单个文件的拷贝

<copy file="xxx.txt" todir=".../something/dir" />

5.删除操作


<target name="clean">
      <delete dir="${dest.dir}" />
      <delete file="${dest2.dir}" />
</target>

特别声明一个我自己常用的操作

ant -DDCHOC_ENV=dev_local migrate-up

dev_local是环境变量,要查看这些东西的话就参照 project_configuration.yml 文件

说明一下,就是几乎所有的task和type都能在ant的源码包里面找到,所以如果需要看看各个标签是干什么的,可以去里面查看。



6.运行Ant

默认情况下如果你直接在command line里面写一个ant,那么它会自动去找当前目录下的build.xml文件,如果你想用其它名字的文件,那么你得写 ant -buildfile file,其中file就是你想要用的task文件。

你也可以在command line里面添加property, ant -Dproperty=value

property就是属性的名称,比如XXX_ENV




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值