1.什么是ANT?
我套用它的开发者James Duncan Davidson的一句话,它只是针对许多人遇到的一个明显问题而提出的一个简单的解决方案。对于这一个解决方案,但凡做WEB应用的都应该比较熟悉,在过去的开发中,或者是没有使用到ANT的项目中,布署一直是一个很麻烦繁锁而且相当无聊的一件事情,你总是不断的重复重复再重复,而ANT也就应运而生,你只需通过很精简的脚本就可以实现非常灵活的布署或者是其它你想做的事情。
2.ANT你认识多少?
ANT是纯JAVA编写的,这也就实现了ANT脚本的平台无关性,同时通过JAVA底层的分隔符实现了WINDOWS和LINUX系统的无缝支持,所以像”app//src//”这样的相对路径可以在任何平台上被识别。当然作为PHP等非JAVA开发者来说,如果你要使用ANT,你不得不装上JVM。
3.ANT真的那么必要?
其实在没有使用ANT之前,我其实并不觉得重复再重复的布署有多么乏味,就好比从前没有味精的时代,佳肴一样美味。但是一旦你开始用上了ANT,你会欲罢不能,我在CHECKOUT一些开源项目时,我总是会先去看它是否有build.xml这个文件,如果没有,我总是会很郁闷一下。任何一个有点规模的项目第一次布署都是很无趣的,可能会花上数小时宝贵的时间。所以没有使用过ANT的开发人士,我强烈推荐,当然如果你正在使用MAVEN的话,可以stay on your way.
4. Action in ANT
去官网下载ANT,并配置相应的ANT_HOME环境变量,这个就不再叙述了。官网上面有着更为详细的步骤。
ANT脚本是以XML结构存储的,他的入门门尴也相当的低。现在就开始一个很简单的实例:
准备步骤:
1. 建立一个文件夹:testApp
2.在testApp文件里建立如下的文件夹路径
3.在demo文件里新建: Person.java
[java]
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
[/java]
准备阶段完毕,现在开始着手ANT脚本编写,在接下来,会展示,如何生成文件夹,如何清除文件夹,以及如何编译java文件和发布
生成文件夹:
[xml]
<project name=”My App” default=”compile” basedir=”.”>
<!– 定义源文件路径–>
<property name=”scr.dir” value=”src”/>
<!– 定义目标文件路径 –>
<property name=”build.dir” value=”build”/>
<property name=”build.lib” value=”${build.dir}/lib”/>
<property name=”build.classes” value=”${build.dir}/classes”/>
<!–生成文件路径 –>
<target name=”prepare”>
<mkdir dir=”${build.dir}”/>
<mkdir dir=”${build.lib}”/>
<mkdir dir=”${build.classes}”/>
</target>
</project>
[/xml]
执行上面的脚本,会生成build路径以及子目录. (ant prepare)
清除文件夹:
[xml]
<target name=”clean”>
<delete dir=”${build.dir}” />
</target>
[/xml]
加入以上代码,执行 ant clean, 会清除build路径所有文件
编译java文件:
[xml]
<target name=”compile” depends=”prepare”
description=”Compiles all source code.”>
<javac srcdir=”${src.dir}” destdir=”${build.classes}”/>
</target>
[/xml]
上面通过调用JAVAC来实现类文件编译,同时target支持继承调用,在compile执行之前会先执行prepare,这个和JAVA机制是一致的.
[xml]
<target name=”jar” depends=”compile”
description=”Generates darcy.jar”>
<!– Exclude unit tests from the final JAR file –>
<jar jarfile=”${build.lib}/darcy.jar”
basedir=”${build.classes}”
excludes=”**/*Test.class”/>
</target>
[/xml]
上面的脚本继承了compile来实现jar打包,excludes是排除匹配的class文件.
当然在最后完成时,加入此代码
[xml]
<target name=”all” depends=”clean,jar”
description=”Cleans, compiles, then builds the JAR file.”/>
[/xml]
执行ant all。。 一切OK。