关于 ANT
Ant是一个基于java的build工具。大家都知道,现在已经有了许多
的build工具,例如make、gnumake、nmake、jam等,而且这些工具
都非常优秀。那我为什么还要给大家介绍Ant这个新工具呢? 因为
Ant是一个跨平台的Build工具。之所以Ant能跨平台,是因为Ant不
再需要你编写shell命令,Ant的配置文件是基于XML的任务树, 能
让你运行各种各样的任务,任务的运行是由实现了特定任务接口的
对象来完成的。
1 获得Ant
Binary版:最新的稳定版的下载地址是:
http://jakarta.apache.org/builds/ant/release/v1.1/bin。
(现最新已是1.5版)
Source版:最新的源码稳定版下载地址是:
http://jakarta.apache.org/builds/ant/release/v1.1/src/。
如果你想获得最新的源码,地址是:
http://jakarta.apache.org/from-cvs/jakarta-ant/
2 系统要求
需要在CLASSPATH中包含与JAXP兼容的XML parser, 才能编译和使
用Ant。
我给大家推荐一个XML parser:xerces,下载地址:
http://xml.apache.org/xerces
当然,JDK肯定是必需的,并且是1.1或之后版本。
3 编译Ant
1. 进入jakarta-ant目录
2. 将JDK加入到你的PATH环境变量中
3. 设置JAVA_HOME环境变量,指向你的JDK安装目录
4. 运行bootstrap.sh角本文件
5. 运行以下命令创建Ant的Binary版:
build.sh -Dant.dist.dir=<安装Ant的目录> dist
4 安装Ant
1. 设置ANT_HOME环境变量,指向你的Ant目录
2. 设置JAVA_HOME环境变量,指向你的JSK目录
3. 将ANT_HOME/bin加入PATH环境变量中
4. 将ant.jar和xerces.jar加入到CLASSPATH环境变量中
假设Ant安装在/usr/local/ant目录,可通过以下方法进行设置:
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${ANT_HOME}/bin {PATH}
export CLASSPATH=${ANT_HOME}/lib/ant.jar:/lib/xerces.jar:
${CLASSPATH}
5 运行ant
运行Ant非常简单,如果你按照上面描述的方法安装了ant,只需在命令
行键入ant就行了。
当你不带任何参数运行ant时,Ant会在当前目录找一个名叫build.xml
的文件。如果找到了,就将该文件作为build配置文件。如果没找到,
它会自动地查找上级目录,一直找到根目录。也可以通过命令行参数
-buildfile 来指定其他配置文件,其中,是你要采用的配置文件名。
用一个HelloWorld例子来简单说明一下:
//HelloWorld.java
package com.sharetop.antdemo;
public class HelloWorld {
public static void main( String args[] ) {
System.out.println("Hello world. ");
}
}
要让Ant编译这个文件,首先需要编写一个Build配置文件。在一般情况下,这个文
件被命名为build.xml。
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir="." >
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="hello_jar" value="hello.jar" />
<target name="init">
<mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
<target name="run" depends="build">
<java classname="com.sharetop.antdemo.HelloWorld"
classpath="${hello_jar}"/>
</target>
</project>
Ant的Build文件是一个标准的XML文件,它包含一个根节点Project,每个Project
定义了至少一个或多个Target,每个Target又是一系列Task的集合。
再来看一下这个文件的内容,它描述了以下信息:工程的名字为HelloWorld,工程
有四个target,分别是init、compil、build和run,缺省是run。compile只有一个
任务javac,源文件位于src目录下,输出的类文件要放在classes目录下。build的
任务是jar,生成的jar文件为hello.jar,它打包时以classes为根目录。而run则
是执行这个HelloWorld类,用hello.jar作为classpath。这四个target之间有一个
依赖关系,这种关系用depends来指定。即如果Target A依赖于Target B,那么在
执行Target A之前会首先执行Target B。所以从下面运行缺省Target(run)的输
出看,这四个Target的执行顺序是:init→compile→build→run。HelloWorld.
java文件在src\com\sharetop\antdemo子目录下。
这个build.xml配置文件开头定义了3个属性,分别指定了源文件输出路径、类文件
输出路径和生成的Jar文件名,后面对这些路径的引用都通过一个${property
name}来引用。所以,要注意这样一个原则“目录的定义与目录的引用应该分开”
。