« JSON-LIB快速入门 | Main | Sun公司与云计算 »
http://developers.sun.com.cn/blog/functionalca/date/20090716 星期四 2009年07月16日

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]
评论:

发表一条评论:
  • HTML语法: 禁用