飞艳小屋

程序--人生--哲学___________________欢迎艳儿的加入

语源科技BlogJava 首页 新随笔 联系 聚合 管理
  52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks

ant 使用 简 介


ant 
是 apache  工程的一个子工程,是一个基于 java 的 build 工具。 ant 类 似于 make 工具,但没有 传统 的 make 工具的缺点。 传统 的 make 往往只能限制在某一平台上使用, ant 本身用 java 类实现 ,要构建的工程的配置文件用 xml 格式描述,可以很方便 实现 多平台 编译 , 非常适合 build 大型工程。

1.
安装配置 ant:
ant 
可以从 http://ant.apache.org 下 载 ,目前最新版本 为 1.5.2 。下 载 完 毕 后直接解 压缩 ,目 录 如下:
ant 
+-- bin // contains launcher scripts
|
+-- lib // contains Ant jars plus necessary dependencies
|
+-- docs // contains documentation
|    +-- ant2 // a brief description of ant2 requirements
|    |
|    +-- images // various logos for html documentation
|    |
|    +-- manual // Ant documentation (a must read )
|
+-- etc 

需要 设 置的 环 境 变 量:
ANT_HOME:ant
的安装目 录
JAVA_HOME:jdk
的安装目 录
PATH:
把 %ANT_HOME%\bin 目 录 加到 path 变 量,以便 于从命令行下直接运行 ant

假定 ant 装在 c:\ant   jdk 装 d:\j2sdk1.4.0
则 在命令行下 执 行以下命令:
set ANT_HOME=c:\ant
set JAVA_HOME=D:\j2sdk1.4.0
set PATH=%PATH%;c:\ant\bin

在 win2000 命令提示符下工作 时 , 每 次都必 须进 行上面的 设 置,退出命令提示符后, 这 些 变 量的 值 又会恢 复 成原来的 样 子。 为 了避免 这 些麻 烦 ,可以在   控制面板 \ 系 统 \ 高 级 \ 环 境 变 量   中 设 置。

上述 设 置完成后,就可以使用 ant 了。

2.
建立工程描述文件 build.xml
用 ant 编译规 模 较 大的工程非常方便, 每 个工程都 对应 一个 build.xml 文件, 这 个文件包含与 这 个工程有 关 的路径信息和任 务 。下面是一个 build.xml 的例子:

<project name="logon" basedir="." default="dist">

<property name="dist.name" value="struts_demo"/>
<property name="src" location="src"/>
<property name="build" location="WEB-INF/classes"/>
<property name="dist" location="D:/tomcat/webapps/dist"/>

<!-- 
Build working classpath -->
<path id="project.class.path">
<pathelement path ="WEB-INF/lib/struts.jar"/>
<pathelement path ="WEB-INF/classes"/>
<pathelement path ="${classpath}"/>
</path>

<target name="init">
<tstamp/>
<!-- Create the build directory structure used by compile -->
<delete dir="${dist}"/>
</target>

<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${build}">
<classpath refid="project.class.path"/>
</javac> 
</target>

<!-- Build binary distribution -->
<target name="dist" depends="compile"
description="Create binary distribution">
<mkdir dir="${dist}"/>
<war destfile="${dist}/${dist.name}.war"
webxml="WEB-INF/web.xml">
<lib dir="WEB-INF/lib"/>
<classes dir="WEB-INF/classes"/>
<fileset dir="${basedir}"/>
</war>
</target>

</project>

要构建的工程目 录 如下:
struts_demo
+--jsp
|
+--src
|
+--WEB-INF
|  +--classes
|  |
|  +--lib
|  |
|  +--web.xml
|
+--build.xml

每 个 build.xml 文件都包含一个 project 和至少一个 target 。 target 包含任 务 元素,任 务 是一段可 执 行代 码 , 每 个任 务 元素都有一个 id 属性,以便于在文件中引用。 ant 有内置任 务 集可供使用,如上面文件中用到的 property 、 javac 和 war, 分 别 完成 设 置属性、 编译 和打包任 务 。当然如果需要的 话 也可以写自己的任 务 。

build.xml 的根元素是 progject, 它有三个属性 name default basedir, 其中 default 是必需的。 name 指定工程的名字, basedir 表示工程的基路径, 设 置 为 "." 表示 build.xml 所在的路径。 default 表示默 认 的 target ,运行 ant 时 如果不指定 target , 则 用 default 指定的 target.

property
任 务 用来 设 置属性,一个工程可以 设 置很多属性,属性有名字和 值 ,属性 设 置后可以在后面引用。

<property name="dist.name" value="struts_demo"/>
设 置一个名字 为 dist.name 的属性,其 值为 struts_demo ,后面使用 时 用 ${dist.name} 引用,表示字符串 struts_demo.

<property name="src" location="src"/>
设 置一个名字 为 src 的属性,它的 值 是一个路径,用 location 设 置。如果 location 内容以 / 或 \ 或 D:\ C:\ 之 类开 始,表示 绝对 路径,否 则 表示相 对 路径,相 对 于 project 中 设 置的 basedir.

使用 path 或 classpath 可以 设 置 类 的路径,后面引用 时 用 id 设 置的 值

构建工程最常用的 ant 内置任 务 :
mkdir
:      创 建目 录 , dir= 要 创 建的目 录
delete:    
删 除文件或文件 夹  dir= 要 删 除的文件或文件 夹
javac:     
编译 java 源文件, java 源文件放在 srcdir 指定的文件 夹 中,生成的 .class 文件按照  package 语 句 组织 目 录 ,存放在 destdir 指定的文件 夹 中。要注意源文件的目 录组织 要与 package 语 句相一致
war:        
为 web 应 用程序打包, destfile 指定打包后生成的文件名, webxml 指定所用的 web.xml 文件。 <fileset dir="${basedir}"/> 将 basedir 目 录 下所有的文件也放在包中

上面的 build.xml 例子中, target 中的属性 depends 表示在 执 行本 target 之前必 须 要做的 target,
例如 dist  的 depends=compile, 意思是在用 dist 打包之前必 须 先用 compile 编译 。 这样 当 执 行 dist 时 首先 执 行 compile

 

 

 

 

/**********************************************************************/

description 元素和 description 属性,它们可用于提供更结构化的注释。

<property name="metal" value="beryllium"/>

 

例如,为了使用这样一个值,它是另一个属性的值的组成部分,您会将标签写为下面这样:

<property name="metal-database" value="${metal}.db"/>

定义依赖关系

<target name="preprocess" depends="init"/>

下面是 Ant 中 jar 任务的一个简单使用例子:

<jar destfile="package.jar" basedir="classes"/>

这将创建一个名为 package.jar 的 JAR 文件,并把 classes 目录中的所有文件添加到其中( JAR

还可以配置 tstamp 任务来设置不同的属性,应用一个当前时间之前或之后的时间偏移,或以不同

的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示:

<tstamp>

<format property="OFFSET_TIME"

pattern="HH:mm:ss"

offset="10" unit="minute"/>

</tstamp>

上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。

<mkdir dir="archive/metals/zinc"/>

<copy file="src/Test.java" tofile="src/TestCopy.java"/>

<move file="src/Test.java" tofile="src/TestCopy.java"/>

<replace file="input.txt" token="old" value="new"/>

<gzip src="output.tar" zipfile="output.tar.gz"/>

<unzip src="output.tar.gz" dest="extractDir"/>

如果我们想要使用一个模式,可以将 file 属性替换为一个 fileset 元素,如下所示:

<copy todir="archive">

<fileset dir="src">

<include name="*.java"/>

</fileset>

</copy>

fileset 默认情况下包含指定 src 目录下的所有文件,因此为了仅选择 Java 文件,我们对模式使

用一个 include 元素。类似地,我们可以对另一个模式添加一个 exclude 元素,从而潜在地排除

include 指定的匹配项。甚至可以指定多个 include 和 exclude 元素;这样将得到一组文件和目录,

它们包含 include 模式的所有匹配项的并集,但排除了 exclude 模式的所有匹配项。

下面是一个文件集的例子,它仅选择那些大于 512 字节并且包含字符串“ hello ”的文件。

<fileset dir="dir">

<and>

<contains text="hello"/>

<size value="512" when="more"/>

</and>

</fileset>

下面是从 CVS 知识库提取模块的一个例子生成文件:

<?xml version="1.0"?>

<project name="CVS Extract" default="extract" basedir=".">

<property name="cvsRoot" value=" :pserver:anonymous@dev.eclipse.org:/home/eclipse "/>

<target name="extract">

<cvs cvsRoot="${cvsRoot}"

package="org.eclipse.swt.examples"

dest="${basedir}"/>

</target>

</project>

 

/*************************************************************************

3. 运行 ant:
使用 ant.bat 可以直接运行 ant, 如果不 带 任何参数, ant 会在当前路径下搜索 build.xml 文件,如果找到,就运行 project 的 default 指定的 target. 也可以 带 参数来 选择 build.xml 文件和要运行的 target

对 于上面的例子 , 假定 build.xml 所在的目 录为 D:\struts_demo\ , 则 下面三 种执 行方式效果是一 样 的:
    1.   cd d:\struts_demo
         ant
    2.   ant -buildfile d:\struts_demo\build.xml
    3.   ant -buildfile d:\struts_demo\build.xml    dist

如果 执 行 ant -buildfile d:\struts_demo\build.xml  compile, 则执 行 compile target

有 关 ant 使用和 build.xml 文件内容,在 ant 的 manual 中有 详细 的描述。




作者的其他文章

· 开 源中 间 件介 绍

· 中国人自己的 开 源 项 目! [ 已 经 收 录 了三个 项 目 ]

· JAVA 常用 类 的使用方法

· JDom 使用 详 解

· 《 Ajax 技 术 地 图 》的演 讲录 音下 载

· 我能 为开 源做些什 么 ?

· Ajax OpenDoc 放出

· Web2.0 三大特性

· 离 线 BLOG

· MSN 开 博一年,特此 纪 念

more..

其他相 关 文章

more...

搜索

本文 关键 字

· 技 术 : "JSP" "XML" "JDK" "WAR" "JAR"

· 产 品 : "Tomcat" "Ant" "Struts"

· 人物:

· 企 业 : "Apache"

热门关键 字

热 点文章

1.       如何写出没有 bug 的程序?

2.       《分析模式》笔 记 之分析手段

3.       《 Ajax 技 术 地 图 》的演 讲录 音下 载

4.       神奇的 javaScript 实现 的无需服 务 器支持的 WIKI

5.       用 开 源 组 件 jcaptcha 做 jsp 彩色 验证码

6.       如果更好的通 过 p2p 网 络观 看世界杯 .

7.       《分析模式》笔 记 之 责 任模式与合同模式

8.       Web2.0 三大特性

9.       各 类开 源 协议 介 绍

10.   Oracle 在 JavaOne 大会上勾勒 SOA 2.0 远 景

11.   《分析模式》笔 记 之 帐 目模式与 观测 模式

12.   Ajax OpenDoc 放出

13.   开 源 JBoss 牵 手 Sun 成 NetBeans 合作伙伴

14.   对 比三个 语 言的 虚函数与抽象函数的区 别

15.   世界杯与国 产开 源 ( 二 )

最新文章

1.       Sun's Peder Ulander Talks with SYS-CON.TV at JavaOne 2006

2.       CowNew 开 源-巧用 SQL 实现 离散数据分析

3.       再 说说 prototype.js 的事件注册

4.       EasyJFCMS 项 目正式启 动 , 诚 邀国内 开 源 爱 好者加入 ( 附 uml 图 )

5.       Infragistics 的 JSF 组 件

6.       编码讨论 --- 乱 码问题 之 终 极解决

7.       《 Ajax 技 术 地 图 》的演 讲录 音下 载

8.       MyEclipse+WebSphere 通 过 JNDI 连 接 Sybase 简 介

9.       第三次 BEA UG 活 动讲义 下 载

10.   我能 为开 源做些什 么 ?

11.   历 史上 编 程方法的 发 展

12.   Ajax OpenDoc 放出

13.   用 调 用者与被 调 用者的角度看 组 件与 设计 模式

14.   Web2.0 三大特性

15.   离 线 BLOG

 

posted on 2006-06-15 13:54 天外飞仙 阅读(482) 评论(0)  编辑  收藏 所属分类: 工具

只有注册用户登录后才能发表评论。


网站导航: