apache ant学习笔记之一

上传人:第*** 文档编号:32682331 上传时间:2018-02-12 格式:DOC 页数:15 大小:100.50KB
返回 下载 相关 举报
apache ant学习笔记之一_第1页
第1页 / 共15页
apache ant学习笔记之一_第2页
第2页 / 共15页
apache ant学习笔记之一_第3页
第3页 / 共15页
apache ant学习笔记之一_第4页
第4页 / 共15页
apache ant学习笔记之一_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《apache ant学习笔记之一》由会员分享,可在线阅读,更多相关《apache ant学习笔记之一(15页珍藏版)》请在金锄头文库上搜索。

1、Apache Ant 学习笔记之一原作者:Matt Chapman Apache Ant 源缘及目的Apache Ant 是一个基于 Java 的生成(在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式)工具。最初的创始人 James Duncan Davidson Antanother neat toolAnt 最初是 Tomcat 的一个内部组件其第一个独立版本于 2000 年 7 月发布。它是为了解决:随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重要了。Ant 工具概要Ant

2、的生成文件是用 XML 编写的。每个生成文件由单个 project 元素组成,该元素又包含一个或多个 target 元素。顶级 project 元素需要包含一个 default 属性,如果在 Ant 被调用时没有指定目标,这个属性将指定要执行的目标。target 是生成过程中已定义的一个步骤,它执行任意数量的操作。如下是一个最简单的文件:A simple project introducing the use of descriptive tags in Ant build files.需要说明的是: 1.XML 声明指定了所使用的 XML 的版本,这不是当前的 Ant 所必需的2.一次性打开

3、和关闭一个元素是允许的,如:,当元素没有包含任何内容时,更简练的形式会更清晰。3.XML 注释可以使用在整个生成文件中以提高清晰性。而且,Ant 定义了它自己的 description 元素和 description 属性,它们可用于提供更结构化的注释。应该了解的一些基本概念属性可以这样定义属性:为了在生成文件的其他部分引用这个属性,要使用以下语法:$metal例如,为了使用这样一个值,它是另一个属性的值的组成部分,标签要写成下面这样:属性分为预定义属性和自定义属性:预定义的属性:运行 Ant 的所有系统属性,均可作为 Ant 属性使用,如:$user.home自定义属性:$ant.versi

4、on,这个属性包含 Ant 的版本;$basedir,这个属性是项目目录的绝对路径(由包含生成文件的目录所定义,或者由 project 元素的可选 basedir 属性所定义)。 Ant 的 location 属性专门设计用于以平台无关的方式包含文件系统路径。您会像下面这样使用 location 来代替 value: 在可能的地方使用相对路径名称而不是绝对路径名称,这样还会更加灵活。 定义依赖关系使用 target 元素的 depends 属性来实现,每个目标的定义依据的是在它在能够执行之前必须完成的其他所有目标。如:目标出现在生成文件中的顺序并不重要:执行顺序是由 depends 属性唯一确

5、定的。使用命令行来运行 Ant如果你敲入 Ant 后回车,默认情况下 Ant 寻找一个名为 build.xml 的文件来执行。Ant 使用 -buildfile 参数(-f 是其简写形式)你可以指定要执行的生成文件。-D 选项用于设置随后可以在生成文件中使用的属性。例如,为了将 name 属性设置为某个特定的值,您会使用一个类似下面这样的选项:-Dmetal=beryllium这个功能可用于覆盖生成文件中的初始属性设置。正如前面指出过的,属性的值一经设置就不能改变。-D 标志在读取生成文件中的任何信息之前设置某个属性;由于生成文件中的指派落在这个初始指派之后,因此它不会改变其值。编写常用的 t

6、argetAnt 的主要目标是生成 Java 应用程序,它能够内在地支持调用 javac 编译器以及其他 Java 相关任务。编译 Java 代码的任务的编写方式: 还支持的属性有:destdir:将类文件放在一个单独的目标目录classpath:等价于 javac 的 -classpath 选项。 debug=true:指示编译器应该带调试信息编译源文件。javac 任务的一个重要特点在于,它仅编译那些它认为需要编译的源文件。如果某个类文件已经存在,并且对应的源文件自从该类文件生成以来还没有改变过,那么该源文件就不会被重新编译。编写一个 clean 目标来从目标目录移除生成的任何类文件是个很

7、好的习惯。如果想要确保所有源文件都已编译,就可以使用这个任务。Ant 的 javac 任务的默认行为是调用运行 Ant 本身的任何 JVM 的标准编译器。然而,有时您可能想要单独地调用编译器 例如当你希望指定编译器的某些内存选项,或者需要使用一种不同级别的编译器的时候。为实现这个目的,只需将 javac 的 fork 属性设置为 true,比如像下面这样:如果想要指定一个不同的 javac 可执行文件,并向它传递一个最大内存设置,您可以像下面这样做:创建 JAR 文件的任务的编写: 这将创建一个名为 package.jar 的 JAR 文件,并把 classes 目录中的所有文件添加到其中(J

8、AR 文件能够包含任意类型的文件,而不只是类文件)。此处没有指定清单文件,因此 Ant 将提供一个基本的清单文件。如:时间戳生成:在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件,以便插入一个字符串来指定日期和时间,或将这个信息合并到 JAR 或 zip 文件的文件名中。这种需要是通过简单但是非常有用的 tstamp 任务来解决的。这个任务通常在某次生成过程开始时调用,比如在一个 init 目标中。这个任务不需要属性,许多情况下只需 就足够了。tstamp 不产生任何输出;相反,它根据当前系统时间和日期设置 Ant

9、 属性。下面是 tstamp 设置的一些属性、对每个属性的说明,以及这些属性可被设置到的值的例子:属性 说明 例子DSTAMP 设置为当前日期,默认格式为yyyymmdd 20031217TSTAMP 设置为当前时间,默认格式为 hhmm 1603 TODAY 设置为当前日期,带完整的月份 2003 年 12 月 17日例如,在调用 tstamp 任务之后,我们能够根据日期命名该 JAR 文件,如下所示:因此,如果这个任务在 2003 年 12 月 17 日调用,该 JAR 文件将被命名为 package-20031217.jar。还可以配置 tstamp 任务来设置不同的属性,应用一个当前时

10、间之前或之后的时间偏移,或以不同的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示:pattern=HH:mm:ssoffset=10 unit=minute/上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。用于定义格式字符串的字符与 java.text.SimpleDateFormat 类所定义的那些格式字符相同。创建和删除目录任务编写: 创建目录:首先要注意 / 被用作目录分隔符,这是 UNIX 和 Linux 的惯例。您可能认为这不是很平台无关的,但是 Ant 知道如何处理它,并针对它运行所在的平台做

11、恰当的事情,这与我们在前面定义基于位置的属性时所看到的方式相同。我们能够同样容易地使用 ,而不管平台是什么 Ant 能够处理任一种形式,甚至能够处理两种形式的混合。mkdir 任务的另一个有用特性是它的如下能力:在父目录还不存在时创建它们。如果目标目录已经存在,mkdir 任务不会发出错误消息,而只是假设它的工作已经完成,从而什么也不做。删除目录同样也很容易:这将删除指定的目录连同它包含的所有文件以及子目录。使用 file 属性而不是 dir 属性可以指定要删除的单个文件。复制和移动文件及目录:使用 move 来执行重命名操作而不是拷贝文件:将文件复制或移动到另一个目录:默认情况下,Ant 仅

12、输出它执行的移动和复制操作的摘要,包括诸如已移动或复制的文件的数量等信息。如果想看到更详细的信息,包括涉及的文件名称等,您可以将 verbose 属性设置为 true。创建和解压缩 zip 及 tar 文件: 相同的语法也可用于创建 tar 文件。 还可以使用 GZip 和 BZip 任务来压缩文件。例如:解压缩和提取文件同样也很简单:还可以包括 overwrite 属性来控制覆盖行为。默认设置是覆盖与正在被提取的归档文件中的条目相匹配的所有现有文件。相关的任务名称是 untar、unjar、gunzip 和 bunzip2。替换文件中的标记:replace 任务,它执行文件中的查找和替换操作

13、。token 属性指定要查找的字符串,value 属性指定一个新的字符串,查找到的标记字符串的所有实例都被替换为这个新的字符串。例如:替换操作将在文件本身之内的适当位置进行。为了提供更详细的输出,可把 summary 属性设置为 true。这将导致该任务输出找到和替换的标记字符串实例的数目。模式匹配:一次对一组文件执行那些操作经常是有用的 例如对给定目录中以 .java 结尾的所有文件执行操作。这是使用通配符字符来完成的:*,它匹配零个或多个字符;以及 ?,它仅匹配一个字符。因而匹配以 .java 结尾的所有文件的模式不过就是 *.java。也可以对目录执行模式匹配。例如,模式 src*/*.

14、java 将匹配带 src 前缀的任何目录中的所有 Java 文件。 还有另一种模式结构:*,它匹配任意数量的目录。例如,模式 */*.java 将匹配当前目录结构下的所有 Java 文件。您能够以相当一致的方式对文件系统任务使用模式,比如嵌套的 fileset 元素。先前,我们使用这个任务来复制单个文件: 如果我们想要使用一个模式,可以将 file 属性替换为一个 fileset 元素,如下所示:fileset 默认情况下包含指定 src 目录下的所有文件,因此为了仅选择 Java 文件,我们对模式使用一个 include 元素。类似地,我们可以对另一个模式添加一个 exclude 元素,从

15、而潜在地排除 include 指定的匹配项。甚至可以指定多个 include 和 exclude 元素;这样将得到一组文件和目录,它们包含 include 模式的所有匹配项的并集,但排除了 exclude 模式的所有匹配项。注意还有一个通常很有用的文件集特性,但是对于没有意识到它的人来说,这个特性偶尔会产生混淆。这个特性称为 默认排除:即自动从文件集内容中排除的内置模式列表。该列表包括与名为 CVS 的目录相匹配的条目,以及以 字符结尾的文件,它们可能是备份文件。您通常不想在文件系统操作中包括这类文件和目录,因此排除这些文件是默认行为。然而,如果确实想无例外地选择 所有 文件和目录,可以将文件

16、集的 defaultexcludes 属性设置为 no。使用选择器:正如我们已经看到的,文件集用于指定一组文件,并且这个组的内容可以使用 include 和 exclude 模式来指定。也可以结合称为 选择器 的特殊元素使用 include 和 exclude 来选择文件。下面是对 Ant 可用的核心选择器的列表:size:这个选择器用于根据文件的字节大小选择文件(除非使用 units 属性来指定了不同的单位)。when 属性用于设置比较的性质(less、more 或者 equal),value 属性定义每个文件将与之作比较的目标大小。contains:只有包含给定文本字符串(由 text 属性指定)的文件才匹配这个选择器。默认情况下,查找操作是大小写敏感的;添加casesensitive=no 可以改变默认设置。filename:name 属性指定文件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号