<!----><!----><!---->
<!---->
在学习
struts+spring+hibernate,
尤其是
Appfuse
的过程中大量涉及到
ant
的使用,因此我觉得有必要对
ant
做个比较深入的学习,以下是在学习过程中搜集的材料。比较详细,很适合没有接触过
ant
的初学者。
Ant
基本使用指南
1 Ant
是什么?
Apache Ant
是一个基于
Java
的生成工具。
生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本
2
下载、安装
Ant
安装
Ant
下载
.zip
文件,解压缩到
c:\ant1.3(
后面引用为
%ANT_HOME%)
2.1
在你运行
Ant
之前需要做一些配置工作。
·
将
bin
目录加入
PATH
环境变量。
·
设定
ANT_HOME
环境变量,指向你安装
Ant
的目录。在一些
OS
上,
Ant
的脚本可以猜测
ANT_HOME
(
Unix
和
Windos NT/2000
)-但最好不要依赖这一特性。
·
可选地,设定
JAVA_HOME
环境变量(参考下面的高级小节),该变量应该指向你安装
JDK
的目录。
注意:不要将
Ant
的
ant.jar
文件放到
JDK/JRE
的
lib/ext
目录下。
Ant
是个应用程序,而
lib/ext
目录是为
JDK
扩展使用的(如
JCE
,
JSSE
扩展)。而且通过扩展装入的类会有安全方面的限制。
2.2
运行
Ant
运行
Ant
非常简单,当你正确地安装
Ant
后,只要输入
ant
就可以了。
没有指定任何参数时,
Ant
会在当前目录下查询
build.xml
文件。如果找到了就用该文件作为
buildfile
。如果你用
-find
选项。
Ant
就会在上级目录中寻找
buildfile
,直至到达文件系统的根。要想让
Ant
使用其他的
buildfile
,可以用参数
-buildfile file
,这里
file
指定了你想使用的
buildfile
。
可以指定执行一个或多个
target
。当省略
target
时,
Ant
使用标签
<project>
的
default
属性所指定的
target
。
命令行选项总结:
ant [options] [target [target2 [target3] ...]]
Options:
-help print this message
-projecthelp print project help information
-version print the version information and exit
-quiet be extra quiet
-verbose be extra verbose
-debug print debugging information
-emacs produce logging information without adornments
-logfile file use given file for log output
-logger classname the class that is to perform logging
-listener classname add an instance of class as a project listener
-buildfile file use specified buildfile
-find file search for buildfile towards the root of the filesystem and use
the first one found
-Dproperty=value set property to value
Ant
命令行参考
从命令行调用
Ant
的语法如下所示:
ant [option [option...]] [target [target...]]
option := {-help
|-projecthelp
|-version
|-quiet
|-verbose
|-debug
|-emacs
|-logfile filename
|-logger classname
|-listener classname
|-buildfile filename
|-Dproperty=value
|-find filename}
语法元素说明如下:
-help
显示描述
Ant
命令及其选项的帮助信息。
-projecthelp
显示包含在构建文件中的、所有用户编写的帮助文档。即为各个
<target>
中
description
属性的文本,以及包含在
<description>
元素中的任何文
本。将有
description
属性的目标列为主目标(
“Main target”
),没有此属
性的目标则列为子目标(
“Subtarget”
)。
-version
要求
Ant
显示其版本信息,然后退出。
-quiet
抑制并非由构建文件中的
echo
任务所产生的大多数消息。
-verbose
显示构建过程中每个操作的详细消息。此选项与
-debug
选项只能选其一。
-debug
显示
Ant
和任务开发人员已经标志为调试消息的消息。此选项与
-verbose
只
能选其一。
-emacs
对日志消息进行格式化,使它们能够很容易地由
Emacs
的
shell
模式(
shellmode
)
所解析;也就是说,打印任务事件,但并不缩排,在其之前也没有
[taskname]
。
-logfile filename
将日志输出重定向到指定文件。
-logger classname
指定一个类来处理
Ant
的日志记录。所指定的类必须实现了
org.apache.
tools.ant.BuildLogger
接口。
-listener classname
为
Ant
声明一个监听类,并增加到其监听者列表中。在
Ant
与
IDE
或其他
Java
程序集成时,此选项非常有用。可以阅读第六章以了解有关监听者的更多信
息。必须将所指定的监听类编写为可以处理
Ant
的构建消息接发。
-buildfile filename
指定
Ant
需要处理的构建文件。默认的构建文件为
build.xml
。
-Dproperty=value
在命令行上定义一个特性名-值对。
-find filename
指定
Ant
应当处理的构建文件。与
-buildfile
选项不同,如果所指定文件在当
前目录中未找到,
-find
就要求
Ant
在其父目录中再进行搜索。这种搜索会继
续在其祖先目录中进行,直至达到文件系统的根为止,在此如果文件还未找
到,则构建失败。
构建文件轮廓
下面是一个通用的构建文件,它很适合作为一个模板。构建文件包括
<project>
元素,以及其中嵌套的
<target>
、
<property>
和
<path>
元素。
<project default="all">
<property name="a.property" value="a value"/>
<property name="b.property" value="b value"/>
<path id="a.path">
<pathelement location="${java.home}/jre/lib/rt.jar"/>
</path>
<target name="all">
<javac srcdir=".">
<classpath refid="a.path"/>
</javac>
</target>
</project>
关于构建文件有几点需要记住:
●
所有构建文件都要有
<project>
元素,而且至少有一个
<target>
元素。
●
对于
<project>
元素的
default
属性并没有默认值。
●
构建文件并不一定要被命名为
build.xml
。不过
build.xml
是
Ant
要搜索的默
认文件名。
●
每个构建文件只能有一个
<project>
元素。
例子
ant
使用当前目录下的
build.xml
运行
Ant
,执行缺省的
target
。
ant -buildfile test.xml
使用当前目录下的
test.xml
运行
Ant
,执行缺省的
target
。
ant -buildfile test.xml dist
使用当前目录下的
test.xml
运行
Ant
,执行一个叫做
dist
的
target
。
ant -buildfile test.xml -Dbuild=build/classes dist
使用当前目录下的
test.xml
运行
Ant
,执行一个叫做
dist
的
target
,并设定
build
属性的值为
build/classes
。
3
编写
build.xml
Ant
的
buildfile
是用
XML
写的。每个
buildfile
含有一个
project
。
buildfile
中每个
task
元素可以有一个
id
属性,可以用这个
id
值引用指定的任务。这个值必须是唯一的。(详情请参考下面的
Task
小节)
3.1Projects
project
有下面的属性:
AttributeDescriptionRequired
name
项目名称
.No
default
当没有指定
target
时使用的缺省
targetYes
basedir
用于计算所有其他路径的基路径。该属性可以被
basedir property
覆盖。当覆盖时,该属性被忽略。如果属性和
basedir property
都没有设定,就使用
buildfile
文件的父目录。
No
项目的描述以一个顶级的
<description>
元素的形式出现(参看
description
小节)。
一个项目可以定义一个或多个
target
。一个
target
是一系列你想要执行的。执行
Ant
时,你可以选择执行那个
target
。当没有给定
target
时,使用
project
的
default
属性所确定的
target
。
3.2Targets
一个
target
可以依赖于其他的
target
。例如,你可能会有一个
target
用于编译程序,一个
target
用于生成可执行文件。你在生成可执行文件之前必须先编译通过,所以生成可执行文件的
target
依赖于编译
target
。
Ant
会处理这种依赖关系。
然而,应当注意到,
Ant
的
depends
属性只指定了
target
应该被执行的顺序-如果被依赖的
target
无法运行,这种
depends
对于指定了依赖关系的
target
就没有影响。
Ant
会依照
depends
属性中
target
出现的顺序(从左到右)依次执行每个
target
。然而,要记住的是只要某个
target
依赖于一个
target
,后者就会被先执行。
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
假定我们要执行
target D
。从它的依赖属性来看,你可能认为先执行
C
,然后
B
,最后
A
被执行。错了,
C
依赖于
B
,
B
依赖于
A
,所以先执行
A
,然后
B
,然后
C
,最后
D
被执行。
一个
target
只能被执行一次,即时有多个
target
依赖于它(看上面的例子)。
如果(或如果不)某些属性被设定,才执行某个
target
。这样,允许根据系统的状态(
java version, OS,
命令行属性定义等等)来更好地控制
build
的过程。要想让一个
target
这样做,你就应该在
target
元素中,加入
if
(或
unless
)属性,带上
target
因该有所判断的属性。例如:
<target name="build-module-A"
if="module-A-present"/>
<target name="build-own-fake-module-A"
unless="module-A-present"/>
如果没有
if
或
unless
属性,
target
总会被执行。
可选的
description
属性可用来提供关于
target
的一行描述,这些描述可由
-projecthelp
命令行选项输出。
将你的
tstamp task
在一个所谓的初始化
target
是很好的做法,其他的
target
依赖这个初始化
target
。要确保初始化
target
是出现在其他
target
依赖表中的第一个
target
。在本手册中大多数的初始化
target
的名字是
"init"
。
target
有下面的属性:
AttributeDescriptionRequired
nametarget
的名字
Yes
depends
用逗号分隔的
target
的名字列表,也就是依赖表。
No
if
执行
target
所需要设定的属性名。
No
unless
执行
target
需要清除设定的属性名。
No
description
关于
target
功能的简短描述。
No
3.3Tasks
一个
task
是一段可执行的代码。
一个
task
可以有多个属性(如果你愿意的话,可以将其称之为变量)。属性只可能包含对
property
的引用。这些引用会在
task
执行前被解析。
下面是
Task
的一般构造形式:
<name attribute1="value1" attribute2="value2" ...
/>
这里
name
是
task
的名字,
attributeN
是属性名,
valueN
是属性值。
有一套内置的(
built-in
)
task
,以及一些可选
task
,但你也可以编写自己的
task
。
所有的
task
都有一个
task
名字属性。
Ant
用属性值来产生日志信息。
可以给
task
赋一个
id
属性:
<taskname id="taskID" ... />
这里
taskname
是
task
的名字,而
taskID
是这个
task
的唯一标识符。通过这个标识符,你可以在脚本中引用相应的
task
。例如,在脚本中你可以这样:
<script ... >
task1.setFoo("bar");
</script>
设定某个
task
实例的
foo
属性。在另一个
task
中(用
java
编写),你可以利用下面的语句存取相应的实例。
project.getReference("task1").
注意
1
:如果
task1
还没有运行,就不会被生效(例如:不设定属性),如果你在随后配置它,你所作的一切都会被覆盖。
注意
2
:未来的
Ant
版本可能不会兼容这里所提的属性,因为很有可能根本没有
task
实例,只有
proxies
。
3.4Properties
一个
project
可以有很多的
properties
。可以在
buildfile
中用
property task
来设定,或在
Ant
之外设定。一个
property
有一个名字和一个值。
property
可用于
task
的属性值。这是通过将属性名放在
"{"
和
"}"
之间并放在属性值的位置来实现的。例如如果有一个
property builddir
的值是
"build"
,这个
property
就可用于属性值:
{builddir}/classes
。这个值就可被解析为
build/classes
。
内置属性
如果你使用了
<property> task
定义了所有的系统属性,
Ant
允许你使用这些属性。例如,
{os.name}
对应操作系统的名字。
要想得到系统属性的列表可参考
the Javadoc of System.getProperties
。
除了
Java
的系统属性,
Ant
分享到:
相关推荐
Ant基本使用指南 Ant基本使用指南 Ant基本使用指南
Ant基本使用指南--从入门到精通 适合于新手和有经验的人士
在学习struts+spring+hibernate,尤其是Appfuse的过程中大量涉及到ant的使用,因此我觉得有必要对ant做个比较深入的学习,以下是在学习过程中搜集的材料。比较详细,很适合没有接触过ant的初学者。
ant的一些使用手册 包括ant1.7基本介绍及ant1.7的API文档
(build file)的基本结构,并学习如何调用这个工具。我们将逐步完成为一个简单 Java 项目编 写生成文件的步骤,然后考察 Ant 的其他一些有用功能,包括文件系统操作和模式匹配。最后编写 一个扩展 Ant 功能的自己的...
Ant介绍以及基本使用指南,jar,war打包语法,打包的注意事项,及bulid.xml的做成。
全面的ant使用手册~!内容如下: · Ant 生成文件是如何构造的 · 如何从命令行以及从Eclipse 内运行Ant · 如果通过编译源代码、创建 JAR 文件以及时间戳文件(以识别每次生成过程的输出)来生 成简单的 Java 项目 ...
ANT是一个基于Java的自动化脚本引擎,脚本格式为XML。除了做Java编译相关任务外,ANT还可以通过插件实现很多应用的调用。 1)ANT的基本概念: ... 3)ANT的使用:最好的学习只不过是一个简单实用的例子起步……
我们将首先查看 Ant 生成文件 (build file)的基本结构,并学习如何调用这个工具。我们将逐步完成为一个简单 Java 项目编 写生成文件的步骤,然后考察 Ant 的其他一些有用功能,包括文件系统操作和模式匹配。...
ant工具的基本用途说明,还有一个比较常用的实例。
《jTester使用指南》jTester 写单元测试的开发文档,作者吴大瑞,pdf 格式,大小 1.1MB。本书带有 pdf 书签,方便读者阅读。 目录: jTester使用指南 目录 第 1 章 安装jtester maven用户安装 ant用户安装 安装...
2.2 基本的Eclipse使用...... 20 2.2.1 在Eclipse中工作..... 21 2.2.2 了解Eclipse用户界面..... 22 2.2.3 任务、书签和问题..... 28 2.2.4 后台处理..... 29 2.2.5 Eclipse的帮助功能..... 30 2.3 资源管理...... ...
2.2 基本的Eclipse使用...... 20 2.2.1 在Eclipse中工作..... 21 2.2.2 了解Eclipse用户界面..... 22 2.2.3 任务、书签和问题..... 28 2.2.4 后台处理..... 29 2.2.5 Eclipse的帮助功能..... 30 2.3 ...
书中系统讲解了在iOS和macOS平台上,使用苹果的Swift语言开发iPhone、iPad和Mac应用的基本概念和编程技巧。主要围绕使用Swift语言进行iOS和macOS开发,结合大量代码示例,教会读者利用高 级iOS和macOS特性开发真实的...
1.5Ant的安装和使用 1.5.1Ant的下载和安装 1.5.2使用Ant工具 1.5.3定义生成文件 1.5.4Ant的任务(task) 1.6使用CVS进行协作开发 1.6.1安装CVS服务器 1.6.2配置CVS资源库 1.6.3安装CVS客户端 1.6.4发布项目...
1.5Ant的安装和使用 1.5.1Ant的下载和安装 1.5.2使用Ant工具 1.5.3定义生成文件 1.5.4Ant的任务(task) 1.6使用CVS进行协作开发 1.6.1安装CVS服务器 1.6.2配置CVS资源库 1.6.3安装CVS客户端 1.6.4发布项目...
1.5Ant的安装和使用 1.5.1Ant的下载和安装 1.5.2使用Ant工具 1.5.3定义生成文件 1.5.4Ant的任务(task) 1.6使用CVS进行协作开发 1.6.1安装CVS服务器 1.6.2配置CVS资源库 1.6.3安装CVS客户端 1.6.4发布项目...
2.2 基本的Eclipse使用...... 20 2.2.1 在Eclipse中工作..... 21 2.2.2 了解Eclipse用户界面..... 22 2.2.3 任务、书签和问题..... 28 2.2.4 后台处理..... 29 2.2.5 Eclipse的帮助功能..... 30 2.3 ...
C ++示例提供了makefile,而Java示例提供了Build.xml文件,分别用于使用make / ant进行构建。 构建脚本和代码已通过各种Apache Thrift版本进行了测试。 通常,您应该使用最新版本的Apache Thrift。 蚂蚁的