Ant使用指南.docx
- 文档编号:6687022
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:12
- 大小:24KB
Ant使用指南.docx
《Ant使用指南.docx》由会员分享,可在线阅读,更多相关《Ant使用指南.docx(12页珍藏版)》请在冰豆网上搜索。
Ant使用指南
Ant使用指南
Java爱好者第1页
ANT使用指南
本教程来源互连网,仅供学习,
版权归原作者及其出版商所有。
Ant使用指南
Java爱好者第2页
第一章入门
本教程所讲述的内容
在本教程中,您将学习Ant这个JavaTM项目生成工具。
由于其灵活性和易用性,Ant很快在Java
开发人员中流行开来,因此您有必要了解关于它的更多信息。
在继续学习本教程之前,你不需要具备先前的Ant经验或知识。
我们将首先查看Ant生成文件
(buildfile)的基本结构,并学习如何调用这个工具。
我们将逐步完成为一个简单Java项目编
写生成文件的步骤,然后考察Ant的其他一些有用功能,包括文件系统操作和模式匹配。
最后编写
一个扩展Ant功能的自己的Java类来结束本教程。
在学习本教程的过程中,我们将同时展示如何从命令行以及从其他开放源代码EclipseIDE运行
Ant。
试验本教程中的例子不需要同时具备这两种环境;您可以选择其一,甚至选择某种不同的开发
环境,只要该环境支持Ant。
如果选择从命令行使用Ant,并且Ant还没有安装到机器上,您需要
遵循Ant主页上的安装说明。
相反,如果决定仅使用Eclipse环境,您不需要单独安装Ant,因
为Eclipse已经包括了它。
如果还没有Eclipse,您可以从Eclipse.org下载Eclipse。
谁应该学习本教程?
如果您正在编写Java代码却还没有使用Ant,那么本教程就是为您准备的。
不管您当前是否在使
用某种不同的生成工具,或者根本就没有使用生成工具,了解关于Ant的更多知识或许会促使您转
而使用它。
如果已经在使用Ant,那么您仍然可能在本教程中发现一些有趣的东西。
或许您会发现一些预料之
外或无法完全理解的Ant行为;本教程将会帮助您。
或者,也许您熟悉Ant的基础,但是还想知
道诸如将生成文件链接起来、使用CVS知识库或编写自定义任务等高级主题;本教程将会介绍所有
这些主题。
Ant使用指南
Java爱好者第3页
Ant主要是设计用于生成Java项目的,但这并不是它唯一的用途。
许多人发现它对其他任务也很
有帮助。
比如以跨平台的方式执行文件系统操作。
此外,还有许多可用的第三方Ant任务,而编写
自定义的Ant任务也是相对简单的,因此很容易针对特定的应用程序定制Ant。
关于作者
MattChapman1996是英国Hursley的IBMCentreforJavaTechnology的咨询软件工程师。
他
过去七年来一直致力于Java技术,包括Java虚拟机实现和各类平台、用户界面工具包Swing和
AWT,以及近来为Eclipse平台所编写的工具。
Matt拥有计算机科学方面的学位,并且还是一名Sun
认证的Java程序员。
可通过mchapman@与他联系。
第二章Ant基础
简介
本节将概述Ant的功能和优势,并讨论它的历史概况和日渐提高的普及性。
然后我们通过考察一个
最基础的生成文件的基本结构,直接进入对Ant基础的讨论。
我们还会介绍属性和依赖关系的
概念。
Ant是什么?
ApacheAnt是一个基于Java的生成工具。
据最初的创始人JamesDuncanDavidson介绍,这个
工具的名称是anotherneattool(另一个整洁的工具)的首字母缩写。
生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可
安装的产品映像形式)。
随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确
相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重要
Ant使用指南
Java爱好者第4页
了。
C或C++中的传统项目经常使用make工具来做这件事情,其中生成任务是通过调用shell命
令来执行的,而依赖关系定义在每个生成文件之间,以便它们总是以必需的顺序执行。
Ant与make类似,它也定义生成文件之间的依赖关系;然而,与使用特定于平台的shell命令来
实现生成过程所不同的是,它使用跨平台的Java类。
使用Ant,您能够编写单个生成文件,这个
生成文件在任何Java平台上都一致地操作(因为Ant本身也是使用Java语言来实现的);这就
是Ant最大的优势。
Ant的其他关键优势包括其突出的简单性和无缝地使用自定义功能来扩展它的能力。
但愿您在完成
本教程其余内容的学习之后,会欣赏Ant的这些优势。
Ant简史
Ant最初是Tomcat的一个内部组件,Tomcat是JavaServlet和JavaServerPages(JSP)参考
实现中使用的servlet容器。
Tomcat代码基被捐赠给了Apache软件基金会;在那里它又成了
ApacheJakarta项目的组成部分,该项目致力于为Java平台产生开放源代码的服务器端解决方
案。
Ant的有用性很快得到了认可,对它的使用遍布在其他Jakarta子项目中。
因而,它自己也成
了一个Jakarta子项目,其第一个独立版本于2000年7月发布。
从那以后,Ant的普及性已经不断地提高。
它赢得了无数的行业大奖,并成为用于生成开放源代码
Java项目的事实上的标准。
2002年11月,这些成功得到了确认,Ant被提升为顶级Apache项
目。
在本文编写之际,Ant的当前稳定版本是1.5.4,它支持1.1以后的所有JDK版本。
下一个版本
(即1.6版)的beta版也已经可用,这些版本需要JDK1.2或更高版本。
未来的2.0版也正在
计划之中,它将涉及一次重大的体系结构重新设计。
Ant2.0将以改进的一致性和增强的功能为特
色,同时仍然保持Ant的简单性、易于理解性和可扩展性等核心目标。
Ant生成文件剖析
Ant使用指南
Java爱好者第5页
Ant没有定义它自己的自定义语法;相反,它的生成文件是用XML编写的。
存在一组Ant能够理
解的预定义XML元素,而且就像您将在下一节中看到的一样,还可以定义新的元素来扩展Ant的
功能。
每个生成文件由单个project元素组成,该元素又包含一个或多个target元素。
一个目标
(target)是生成过程中已定义的一个步骤,它执行任意数量的操作,比如编译一组源文件。
这些
操作本身是由其他专用任务标签执行的,我们将在后面看到这一点。
然后这些任务将根据需要被分
组到各个target元素中。
一次生成过程所必需的所有操作可以放入单个target元素中,但是那
样会降低灵活性。
将那些操作划分为逻辑生成步骤,每个步骤包含在它自己的target元素中,这
样通常更为可取。
这样可以执行整体生成过程的单独部分,却不一定要执行其他部分。
例如,通过
仅调用某些目标,您可以编译项目的源代码,却不必创建可安装的项目映像。
顶级project元素需要包含一个default属性,如果在Ant被调用时没有指定目标,这个属性将
指定要执行的目标。
然后需要使用target元素来定义该目标本身。
下面是一个最基本的生成文件:
xmlversion="1.0"?
>
注意这是一个结构良好的XML文档,其中一个XML声明指定了所使用的XML的版本(这不是当前
的Ant所必需的,但是这样做是一个好习惯),而且每个元素都正确地关闭了。
一次性打开和关
闭一个元素也是可以做到的。
因此,与其像上面那样对target元素使用单独的起始和结束标签,
我们可以将它写为如下形式:
当元素没有包含任何内容时,更简练的形式会更清晰。
添加描述:
我们在前一小节中看到的生成文件是优雅简练的,但它并没有包含多少关于正在生成的实际项目的
信息。
可以通过许多方式来使它更具描述性,同时无需改变其功能。
下面是一个例子:
Ant使用指南
Java爱好者第6页
xmlversion="1.0"?
>
AsimpleprojectintroducingtheuseofdescriptivetagsinAntbuildfiles.
--XMLcommentscanalsobeused-->
--performinitializationstepshere-->
可以看出,XML注释可以使用在整个生成文件中以提高清晰性。
而且,Ant定义了它自己的
description元素和description属性,它们可用于提供更结构化的注释。
属性
Ant中的属性类似编程语言中的变量,它们都具有名称和值。
然而与通常的变量不同,一经设置,
Ant中的属性就不可更改;它们是不可变的,就像Java语言中的String对象。
这起初看来似乎
很有限制性,但这样是为了遵循Ant的简单原则:
毕竟,它是一个生成工具,而不是一种编程语
言。
如果尝试给某个现有属性赋予一个新的值,这不会被看作是一个错误,但是该属性仍然会保留
其现有值。
(我们将会看到,这种行为是有用的。
)
基于元素的描述性名称和到目前为止所见到的属性,在Ant中用于设置属性的机制看起来如下就没
有什么奇怪了:
为了在生成文件的其他部分引用这个属性,您会使用以下语法:
${metal}
例如,为了使用这样一个值,它是另一个属性的值的组成部分,您会将标签写为下面这样:
Ant使用指南
Java爱好者第7页
Ant中有许多预定义的属性。
首先,Java环境设置用于运行Ant的所有系统属性,均可作为Ant属
性使用,比如${user.home}。
除了这些属性之外,Ant还定义了它自己的一小组属性,包括
${ant.version},这个属性包含Ant的版本;以及${basedir},这个属性是项目目录的绝对路径
(由包含生成文件的目录所定义,或者由project元素的可选basedir属性所定义)。
属性经常用于引用文件系统上的文件或目录,但是对于使用不同路径分隔符(例如,/与\)的平
台来说,这样可能在跨越不同平台时导致问题。
Ant的location属性专门设计用于以平台无关的
方式包含文件系统路径。
您会像下面这样使用location来代替value:
用于location属性的路径分隔字符将被转换为当前平台的正确格式;而且由于文件名是相对的,
它被认为是相对于项目的基目录。
我们同样可以容易地写为下面这样:
这个标签的两个版本都会在不同的平台具有相同的行为。
如果可移植性是必需的,唯一要避免的内
容就是文件名中的DOS风格的驱动器号。
在可能的地方使用相对路径名称而不是绝对路径名称,这
样还会更加灵活。
定义依赖关系
生成一个项目一般需要许多步骤——例如首先要编译源代码,然后将它打包为Java归档文件
(JavaArchiveFile,JAR)。
这其中许多步骤都具有清楚定义的顺序——例如,在编译器从源
代码生成类文件之前,您不能打包类文件。
与顺序指定target所不同的是,Ant采用一种更灵活
的方法来定义依赖关系,就像make和类似的生成工具所做的那样。
每个目标的定义依据的是在
它在能够执行之前必须完成的其他所有目标。
这是使用target元素的depends属性来实现的。
例
如:
Ant使用指南
Java爱好者第8页
这种方法允许您执行项目任何阶段的生成过程;Ant会首先执行已定义的先决阶段。
在上面的例子
中,如果让Ant完成compile步骤,它将判断出需要首先执行init和preprocess这两个目标。
init目标不依赖其他任何目标,因此它将首先被执行。
然后Ant检查preprocesstarget,发现它
依赖init目标;由于已经执行了后者,Ant不会再次执行它,因而开始执行preprocess目标。
最后可以执行compile任务本身。
注意目标出现在生成文件中的顺序并不重要:
执行顺序是由
depends属性唯一确定的。
第三章运行ANT
简介
ApacheAnt可通过各种不同的方式来调用。
就其本身而言,Ant是一个命令行形式的工具,通常从
UNIX或Linuxshell提示符或者Windows命令提示符调用,生成文件则使用您自己选择的文本编
辑器来编写。
如果要生成的项目是以这种方式开发的,那么这样调用Ant很好,但是许多人发现IDE
更方便。
大多数IDE都对Ant提供了某种程度的支持,因此在使用IDE的情况下,最起码,您不
必麻烦地离开IDE来执行命令行操作就能调用Ant生成任务。
在本节中,我们将考察如何从命令行使用Ant,并了解一些有用的命令行选项。
然后简要了解一下
开放源代码的Eclipse平台提供的Ant支持。
(为了最充分地利用下面这些小节讲述的内容,您
至少应该被动地熟悉Eclipse。
)
从命令行运行Ant
从命令提示符调用Ant可以简单得只需键入单独的ant。
如果您这样做,Ant将使用默认的生成文
件;该生成文件中指定的默认目标就是Ant尝试要生成的目标。
还可以指定许多命令行选项,后面
跟着任意数量的生成目标,Ant将按顺序生成这其中的每个目标,并在此过程中解决所有依赖关系。
Ant使用指南
Java爱好者第9页
下面是从命令行执行的Ant生成任务的一些典型输出:
Buildfile:
build.xml
init:
[mkdir]Createddir:
E:
\tutorials\ant\example\build
[mkdir]Createddir:
E:
\tutorials\ant\example\dist
compile:
[javac]Compiling8sourcefilestoE:
\tutorials\ant\example\build
dist:
[jar]Buildingjar:
E:
\tutorials\ant\example\dist\example.jar
BUILDSUCCESSFUL
Totaltime:
2seconds
随着我们继续本教程的学习,我们将弄明白所有这些输出意味着什么。
命令行选项
就像make工具默认情况下寻找一个名为makefile的生成文件一样,Ant寻找一个名为
build.xml的文件。
因此,如果您的生成文件使用这个名称,就不需要在命令行指定它。
当然,有
时使用具有其他名称的生成文件更方便,在那样的情况下,您需要对Ant使用-buildfile
参数(-f
另一个有用的选项是-D,它用于设置随后可以在生成文件中使用的属性。
这对于配置您想要以某种
方式开始的生成过程是非常有用的。
例如,为了将name属性设置为某个特定的值,您会使用一个
类似下面这样的选项:
-Dmetal=beryllium
这个功能可用于覆盖生成文件中的初始属性设置。
正如前面指出过的,属性的值一经设置就不能改
变。
-D标志在读取生成文件中的任何信息之前设置某个属性;由于生成文件中的指派落在这个初始
指派之后,因此它不会改变其值。
Ant使用指南
Java爱好者第10页
IDE集成
由于Ant的普及性,大多数现代IDE现在都集成了对它的支持,其他许多IDE则在插件提供对它
的支持。
受支持的环境列表包括JEdit和Jext编辑器、BorlandJBuilder、IntelliJIDEA、Java
DevelopmentEnvironmentforEmacs(JDEE)、NetBeansIDE、Eclipse以及WebSphereStudio
ApplicationDeveloper。
请参阅参考资料以了解关于Ant的广泛IDE支持的更多信息。
在本节的其余部分,我们将探讨开
放源代码的Eclipse环境所包括的Ant支持。
Eclipse对Ant的支持
开放源代码的Eclipse项目提供了对Ant的大量支持。
这些支持的核心是Eclipse的Ant编辑
器,它以语法高亮显示为特色。
该编辑器图示如下:
这个编辑器提供内容辅助——例如,键入 列表,其中包含 您还可以看到一个大纲视图,它显示生成文件的结构,并提供在该文件中导航的便捷方式。 此外还 有一个Ant视图,它允许根据许多不同的Ant文件生成目标。 Ant使用指南 Java爱好者第11页 从Eclipse内运行Ant生成任务 名为build.xml的文件在Eclipse的导航程序视图中使用一个Ant图标来标识和装饰。 右键单击 这些文件会提供一个RunAnt...菜单选项,选择这个菜单选项将打开一个类似如下的对话框: 来自该生成文件的所有目标都显示出来了,而默认的目标则处于选中状态。 在您决定是否要改变默 认目标之后,请按Run按钮来运行Ant。 Eclipse将切换到Console视图,如下图所示。 错误将 以不同的颜色显示出来,可以单击输出中的任务名称来跳到生成文件中的对应调用点。 Ant使用指南 Java爱好者第12页 Eclipse中的文件关联 默认情况下,Eclipse仅对名为build.xml的文件使用Ant编辑器,不过可以容易地配置该编辑 器,使其识别具有其他名称的文件。 从菜单上选择Window=>Preferences,然后展开Workbench组, 再选择FileAssociations参数设置页面。 然后为预期的文件名添加一种新的文件类型。 例如,可 以为名为mybuild.xml的所有文件添加一种新的文件类型。 如果想对具有.xml后缀的所有文件 (特殊文件名除外,比如plugin.xml,它在Eclipse中覆盖通配符指定)做同样的事情,您甚至 可以使用*.xml。 最后为这种新的文件类型添加一个关联的编辑器,然后从编辑器列表上选择Ant editor,如下所示: Ant使用指南 Java爱好者第13页 第四章生成一个简单的JAVA项目 简介 现在我们已经清楚了Ant生成文件的格式,并了解了如何定义属性和依赖关系以及如何运行Ant, 下面可以开始为一个基本的Java项目构建一个生成环境了。 这将包括学习用于编译源代码和组合 JAR文件的Ant任务。 Ant使用指南 Java爱好者第14页 编译源代码 由于Ant的主要目标是生成Java应用程序,它能够内在地、出色地支持调用javac编译器以及 其他Java相关任务就毫不奇怪了。 下面是编译Java代码的任务的编写方式: 这个标签寻找src目录中以.java为扩展名的所有文件,并对它们调用javac编译器,从而在相 同的目录中生成类文件。 当然,将类文件放在一个单独的目录结构中通常会更清晰;可以通过添加 destdir属性来让Ant做到这点。 其他有用的属性包括: ·classpath: 等价于javac的-classpath选项c2一。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Ant 使用指南