ANT 快速入门
ANT 快速入门
作者:曹祺
Blog: http://blogs.sun.com/greysh
Web: http://www.greysh.com
Email: Qi.Cao@Sun.com
本文链接:
http://developers.sun.com.cn/blog/functionalca/entry/ant_%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8
本文工程源文件:
http://developers.sun.com.cn/blog/functionalca/resource/Greysh/FCA_Greysh_ANT.zip
难度:入门
Ant是一种很常用的项目构建工具(尽管现在越来越多的项目采用MAVEN,对MAVEN感兴趣的读者,可以参考本人写的另一篇文章:MAVEN快速入门:http://developers.sun.com.cn/blog/functionalca/entry/maven_%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8)
1.ANT简介
2.HelloWorld
3.其他常用ANT命令
ANT简介
ANT由Apache基金会开发,类似Unix的Make工具,官方网站是http://ant.apache.org/,构建工具最大的好处在于自动化部署,编译。比如编译一个helloworld,可能只要输入一个javac。但是如果很多java文件进行编译,将要输入很多javac,而且还要注意依赖关系,当A需要用B的文件,则需要先编译B。如果用构建工具,ANT是会根据配置自动识别编译的顺序的。此外构建工具还可以完成很多其他任务,比如发邮件,自动打包为jar。
读者从官方网站下载后,需要配置两个环境变量(前提是你已经配置好了JDK的环境变量)ANT_HOME和PATH.配PATH的时候直接追加,不要覆盖JDK已经的配好的PATH。
ANT_HOME指向ANT解压缩后的目录
PATH追加%ANT_HOME%/bin
这样环境就配置好了,进行检查的时候输入
ant -version
如果能打印出版本号的话,则配置成功
本人运行后的输出如下
C:\Documents and Settings\Administrator>ant -version
Apache Ant version 1.7.1 compiled on June 27 2008
HelloWorld
本文教程仅仅针对最常用命令,如果想深入的了解ant的其他命令,可以参考本文第三部分,当然最好是直接去Apache官方网站看官方指南
例如一个最简单的输出程序
package com.greysh.ant;
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello Greysh!");
System.out.println("Built by Apache Ant!");
}
}
然后进行编译的时候我们需要把编译的过程写在配置文件中,默认的文件名是build.xml
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
<property name="src" value="src"/>
<property name="out" value="classes"/>
<property name="dist" value="HelloWorld.jar"/>
<target name="init">
<mkdir dir="${out}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${out}"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${dist}" basedir="${out}"/>
</target>
<target name="run" depends="build">
<java classname="com.greysh.ant.HelloWorld" classpath="${dist}"/>
</target>
<target name="clean">
<delete dir="${out}" />
<delete file="${dist}" />
</target>
</project>
结构图如下
其中<?xml version="1.0" encoding="UTF-8" ?>声明是一个XML文件
<project name="HelloWorld" default="run" basedir=".">
指定工程名,起始目录和默认执行的操作,所有的操作必须放在target里面
然后target里面的name指定了标签,这个标签可以在不同的target的调用
project里面放置的target是动作,然后property是属性,当在前面定义好属性后
后面可以直接用${}的形式进行条用,初学者在定义自己的build的时候,要注意文件的路径
本文的路径如下
C:.
│ build.xml
│
└─src
└─com
└─greysh
└─ant
HelloWorld.java
上述的build.xml包含的动作有init,compile,build,run和clean,默认调用的方法是run
在project指定
<project name="HelloWorld" default="run" basedir=".">
然后执行
<target name="run" depends="build">
<java classname="com.greysh.ant.HelloWorld" classpath="${dist}"/>
</target>
会先根据depends="build" 完成build操作
这个target里面的java一起build里面的jar还有compile的javac和init的mkdir都是ant执行的命令
<java classname="com.greysh.ant.HelloWorld" classpath="${dist}"/>
这一行ant会去执行java命令,当然ant命令很多,常用的命令请看本文第三部分
用ant编译的时候,只需要在xml中指定依赖的类库就可以了,就不需要java -classpath那样的命令
对于刚才写好的build.xml和java源文件,使用的时候先切换到build.xml所在的位置然后执行默认
操作输入
ant -f build.xml
C:\Documents and Settings\Administrator\桌面\ant>ant -f build.xml
Buildfile: build.xml
init:
[mkdir] Created dir: C:\Documents and Settings\Administrator\桌面\ant\classes
compile:
[javac] Compiling 1 source file to C:\Documents and Settings\Administrator\桌面\ant\classes
build:
[jar] Building jar: C:\Documents and Settings\Administrator\桌面\ant\HelloWorld.jar
run:
[java] Hello Greysh!
[java] Built by Apache Ant!
BUILD SUCCESSFUL
Total time: 1 second
C:\Documents and Settings\Administrator\桌面\ant>
可以看到run之后的结果
run:
[java] Hello Greysh!
[java] Built by Apache Ant!
如果想指定build.xml的部分操作,比如执行clean,删除生产的目标文件,可以执行
ant -f build.xml clean
输出如下
C:\Documents and Settings\Administrator\桌面\ant>ant -f build.xml clean
Buildfile: build.xml
clean:
[delete] Deleting directory C:\Documents and Settings\Administrator\桌面\ant\classes
[delete] Deleting: C:\Documents and Settings\Administrator\桌面\ant\HelloWorld.jar
BUILD SUCCESSFUL
Total time: 0 seconds
以上是一个最简单的Apache Ant Helloworld
3.其他常用命令,这里主要指的是target里面的命令
除了刚才的mkdir,java,javac等还有以下命令
ant:相当于在shell里面执行ant
例如<ant dir="${src}" target="clean"/>
copy:复制文件,复制目录用copydir
例如
<copy todir="${bin}">
<fileset dir="${src}">
<include name="*.jar"/>
</fileset>
</copy>
其中include是包含,exclude是排除
import:导入
echoxml:导出xml
delete:删除文件。如果是删除文件树用deltree
move:剪切文件
touch:文件不存在则创建,跟Linux Bash的touch差不多
condition:条件判断
replace:替换
chmod:修改文件权限,跟Linux Bash的chmod类似
checksum 检查md5摘要
jar:打包为jar,如果是企业归档,用ear命令
exec:执行程序,
例如<exec executable="cmd"><arg value="calc"/></exec>
执行如果在windows下运行会运行calculate,输出为
C:\Documents and Settings\Administrator\桌面>ant -f build.xml
Buildfile: build.xml
init:
[exec] Microsoft Windows XP [版本 5.1.2600]
[exec] (C) 版权所有 1985-2001 Microsoft Corp.
[exec]
[exec] C:\Documents and Settings\Administrator\桌面>
BUILD SUCCESSFUL
Total time: 0 seconds
C:\Documents and Settings\Administrator\桌面>
javadoc:生成javadoc
sql:运行sql语句
filter:过滤器,也是对文件流进行处理
length:计算变量长度
mail:发送邮件
unzip:解压缩zip文件
zip:压缩为zip
tar:压缩为tar
untar:解压缩tar文件
war:打包为war
如果想对ant有更深入的了解,请查看apache官方http://ant.apache.org
发表于 Sun Functional 校园大使 [JavaEE] ( 七月 16, 2009 04:22 下午 ) Permalink | 评论[0]
