已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Apache Ant 中文手册引言Apache Ant是一个基于Java的编译工具。它从功能上类似于make,但它以克服了make的缺点。为什么在make, gnumake, nmake, jam这些编译工具后,还要产生一个Ant呢?因为这些编译工具都有一定的限制。Ant的最初开发者在开发跨平台的应用时,发现以前的那些开发工具都有一定的限制。例如make工具,它是基于Shell的,它判断一系列的条件,并像在shell下面那样执行编译命令,这样做的好处的:针对特定的平台(如unix),可以容易的利用这些工具做编译;但同时,这也意味着,你的编译限制在固定的操作系统下,如只能用于unix。同时,Make文件也有一些先天的缺陷。好多人都会遇到恐怖的tab问题。Ant的最初开发者多次说“我的命令不能执行因为我在tab前面加了一个空格!”。一些工具如Jam一定程序上解决了这个问题,但仍有其它的格式问题。Ant与从基于命令的那些扩展开来的那些工具不同,Ant是由java类扩展的。不用编写shell命令,而是配置基于XML的文件,形成多个任务的目标配置树。每一个任务都是通过一个实现了一个规定接口的java类来运行的。ant缺少了一些直接执行shell命令的能力,如find . -name foo -exec rm ,但它给用户提供了跨平台的能力,可以在任何地方工作。实际上,Ant也提供了命令execute用来执行shell命令,这就是它的任务,它允许执行基于操作系统的命令。安装Ant 下载Ant。Ant有两个版本,二进制版本和原代码版本。 要编译和使用Ant,你必须要有一个兼容JAXP的XML解析器。 二进制版本中自己带有了最新的Apache Xerces2 XML解析器。如果你想用不同的兼容JAXP的解析器,你可以移去Ant库目录下的xercesImpl.jar和xml-apis.jar两个文件。你可以要用的解析器放到Ant的库目录下,也可以把jars文件放到系统的类路径中。 在Ant的当前版本中,还需要安装JDK。下面的二进制片版本的安装后的目录结构。 ant 安装目录 ant/bin 包含了运行脚本 ant/lib ant运行所需的类库 ant/docs 文档 ant/etc 一些配置,如何通过任务的xml输出建立详细的报告, 移动编译后的文件,忽略错误警告 在运行前还要做一些设置:1) 在path路径中加入ant/bin目录;2) 设置ANT_HOME为安装目录;3) 通常还要设置JAVA_HOME为JAVA的安装路径。 例如下: set ANT_HOME=c:antset JAVA_HOME=c:jdk1.5.1set PATH=%PATH%;%ANT_HOME%bin使用Ant1 写一个简单的编译文件Ant的编译文件是写成XML格式的,每一个编译文件包含一个project和至少一个target。 Targets包含了一些task元素。每一个task元素可以有一个id 属性(attribute)可以被其它的引用。2 Projects 一个projext可以有如下的属性attribute:attribute说明是否必须name项目名称Nodefault当没有target支持时,缺省使用的target Yes.basedir基目录,其它的目录都是相对于此. 这个attribute可以被basedir property 覆盖。当basedir property设置后,basedir attribute就不起作用了。如果两者都没有设置,则buildfile本身的父目录作为基目录。 No 根据需要,还可以设定项目的说明,在元素中。 第一个project可以有一个或多个targets。一个target就是一系列的你要执行的任务组。在运行Ant时, 你可以选择哪一个任务组被执行。如果没有给出执行的任务组,则project缺省的任务组被执行。3 Targets target可能依赖于其它的target而存在。你可能用一个target用来编译,用 另一个target且用来布署。只有编译完成后,布署才可执行,这样布署就 依赖于编译。 要说明的是,ant的depends attribute只是规定了target之间的前后执行 关系,并不表示真正的依赖性。 依赖的次序是按照排列次序从左到右。但如果这些依赖本身之间还有依赖 关系,也可能在后面的先执行,如下面的例子: 如果我们要运行target D。从它的依赖attribute列表上看,可能先执行C, 然后B,再后是A。其实这是不对的。C依赖于B,B依赖于A。因此是A先执行, 然是B,然后C,最后是D。 一个target只执行一次,虽然可能好多的target都依赖于它。如上例中所示。 Target还可以根据它的attribute的设置情况来判定执行情况。这允许根据 系统的状况(如java版本,OS,命令行属性定义等等)更好的控制编译过程。 这就引入if或unless属性(attribute)。 注意:Ant只是检查属性(attribute)是否被设置,而不查它的值,即使属性 (attribute)值为空字符串,它仍认为这是一个存在的属性(attribute)。 例如: 在第一行中,如果module-A-present属性(attribute)被设置,则target执行。 在第二个中,如果module-A-present属性(attribute)被设置,同target不执行。 如果没有if或unless属性(attribute),则目标总会被执行。 可选的description属性(attribute)可以用来表示一行的target的说明,可以 在命令行中用-projecthelp参数显示出来。没有description属性(attribute) 的target被认为是内部的,并不显示出来,除非利用了-verbose或-debug参数。 初始化target,所有的其它target都依赖于它。通常都位于依赖列表的第一项。 在这个手册中,大都的初始化targets用init来命名。Target有如下的属性:属性(attribute)说明是否必须nameTarget的名字Yesdepends依赖target列表Noif要执行target,某属性(attribute)必须要被设置Nounless要执行target,某属性(attribute)必须不能被设置Nodescription有关target功能的简短说明 NoTarget命名说明:可以使用任何XML编码支持的字母表中的字符,如空串,逗号,空格。但最好避免使用它们,为了避免引起歧义,将来版本的Ant不支持这些特殊的字符。而各种IDE中时target的命名规则,则跟具体的开发厂家相关。以横线开头的target名,如”-restart”是有效的命名,但不能被用来在命令行中执行。4 Tasks Task是一段可执行的代码。 Task可以有多种属性(attribute)(或参数,只要你喜欢), 属性(attribute)的值可能包含了对属性(attribute)的引用。 这些引用在task执行 以前要解析开。Task的通用结构如下:name是task的名字,attributeN是属性(attribute)的名字,而valueN则是属性(attribute)的值。一些是内建的任务,而另一些是可选的任务,用户可自由定义。所有的tasks都有共享task名字,属性(attribute)值将会在ant生成消息时用到。Task可以指定一个id属性(attribute):Taskname是task的名字,taskID是一个独一无二的标识。你可以在脚本程序或其它的task中通过这个名字引用相应的task对象。例如: task1.setFoo(bar); 这样可以task1的Foo属性值为bar;而在java程序中,则通过project.getReference(task1)访问task1实例。5 Properties项目可以有一系列的属性(property)。这些可能在编译文件通过property任务(task)设置,或可能在Ant外设置。一个属性(property)由名字和值对应起来。名字是大小写敏感的。属性(property)可以用在task的(attribute)中。能够在”property名”的方式进行引用。例如,如果有一个builddir属性(property),值为build,则在属性(attribute)中可以这样用:$builddir/classes。在运行时,它被转换成build/classes。内建的PropertiesAnt提供了所有的系统属性的访问就像这些系统属性(property)已经定义在任务中一样。例如:$表示操作系统的名称。下面列出了一些内建属性(property): basedir 项目的绝对路径 (就像在的basedir属性中定义中的一样) ant.file 编译文件的绝对路径 ant.version Ant的版本 正在执行的项目的名字,(就像在的name属性中设置的那样). ant.java.version JVM的版本,其值可能是1.1, 1.2, 1.3 and 1.4. 编译文件的例子: simple example build file 上面,我们把属性(property)定义在任何target的外部,和这些task是特殊的task,可以在任何的target外部定义。这样做时,它们会在任何target执行前被执行。其它任何的task不能tar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某汽车厂安全驾驶准则
- 某纺织厂印染工艺细则
- 2026年宁夏固原市中小学教师招聘考试真题试卷(含完整答案解析)
- 小数除法:被除数整数部分小于除数的算理理解与算法构建-小学五年级数学教学设计
- 高中体育与健康一年级篮球运球急停急起知识清单
- 小学科学一年级上册《做个“时间胶囊”》核心知识清单
- 初中九年级数学:特殊三角形的性质、判定与综合应用教学设计
- 初中英语九年级全一册Unit 10 Youre supposed to shake handsSection A 3a3c 跨文化阅读教学方案
- 小学五年级数学《体积单位:从具身感知到度量结构的教学构建》教学设计
- 初中音乐八年级下册《惊愕交响曲(第二乐章)》核心素养教学设计
- 2026入伍军检面试题目及答案
- 2026学年甘肃省陇南市三年级数学期末深度自测实战演练题(附答案)详细答案和解析
- 2026浙江省杭州市萧山区区长电话受理中心招聘重点基础提升(共500题)附带答案详解
- 《昆虫记》全阅读测试题及答案
- 2026年兰石化企业考核笔综合提升练习题及答案详解(考点梳理)
- 2026年人教版初一政治(道德与法治)下学期期末考试试卷及答案(共七套)
- 广告安装施工方案文本(3篇)
- 2024年7天连锁酒店员工手册
- 2026年湖北省黄冈市八年级地理生物会考真题试卷(+答案)
- 循环流化床锅炉(CFB炉)设计计算大纲
- 舞蹈类创新创业
评论
0/150
提交评论