ANT自动化脚本编译_第1页
ANT自动化脚本编译_第2页
ANT自动化脚本编译_第3页
ANT自动化脚本编译_第4页
ANT自动化脚本编译_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ANT自动化脚本编译研发中心/软件产品线曹锋2013年1月5日Ant是什么ApacheAnt是一个基基于Java的生成工工具。据据最初的的创始人人JamesDuncanDavidson介绍,这这个工具具的名称称是another neattool(另一个个整洁的的工具) 的首首字母缩缩写。Ant的作用生成工具具在软件件开发中中用来将将源代码码和其他他输入文文件转换换为可执执行文件件的形式式(也有有可能转转换为可可安装的的产品映映像形式式)。随随着应用用程序的的生成过过程变得得更加复复杂,确确保在每每次生成成期间都都使用精精确相同同的生成成步骤,同时实实现尽可可能多的的自动化化,以便便及时产产生一

2、致致的生成成版本,这就变变得更加加重要Ant的的优势Ant定定义生生成文件件之间的的依赖关关系,它它使用跨跨平台的的 Java类类。使使用Ant,您能够够编写单单个生成成文件,这个生生成文件件在任何何 Java平平台上上都一致致地操作作(因为为 Ant本本身也是是使用Java语语言来实实现的),这就就是Ant最最大的的优势Ant生成文件件剖析Ant没有定义义它自己己的自定定义语法法;相反反,它的的生成文文件是用用XML编写的。存在一一组Ant能够理解解的预定定义XML元素,而而且还可可以定义义新的元元素来扩扩展Ant的功能。每个生生成文件件由单个个project元素组成成,该元元素又包包含一个

3、个或多个个target元素。一一个目标标(target)是生成成过程中中已定义义的一个个步骤,它执行行任意数数量的操操作,比比如编译译一组源源文件。并且这些些操作本本身是由由其他专专用任务务标签执执行的Ant生成文件件剖析然后这些些任务将将根据需需要被分分组到各各个target元素中。一次生生成过程程所必需需的所有有操作可可以放入入单个target元素中,但是那那样会降降低灵活活性。将将那些操操作划分分为逻辑辑生成步步骤,每每个步骤骤包含在在它自己己的target元素中,这样通通常更为为可取。这样可可以执行行整体生生成过程程的单独独部分,却不一一定要执执行其他他部分。例如,通通过仅调调用某些些

4、目标,您可以以编译项项目的源源代码,却不必必创建可可安装的的项目文文件Ant生成文件件剖析顶级project 元素素需要包包含一个个 default属属性,如果在在 Ant被被调用时时没有指指定目标标,这个个属性将将指定要要执行的的目标。然后需需要使用用 target元元素来定定义该目目标本身身。下面是一一个最基基本的生生成文件件Ant生成文件件剖析更进一步步A simpleproject introducing theuseofdescriptivetagsinAntbuildfiles.更进一步步可以看出出,XML注释可以以使用在在整个生生成文件件中以提提高清晰晰性。而而且,Ant定义了它

5、它自己的的description元素和description属性,它们可可用于提提供更结结构化的的注释。属性Ant中的属性性类似编编程语言言中的变变量,它它们都具具有名称称和值。然而与与通常的的变量不不同,一经设置置,Ant中的属性性就不可可更改;它们是是不可变变的,就像Java语言中的的String对象。 这起起初看来来似乎很很有限制制性,但但这样是是为了遵遵循Ant的简单原原则:毕毕竟,它是一一个生成成工具,而不是是一种编编程语言言。如果果尝试给给某个现现有属性性赋予一一个新的的值,这这不会被被看作是是一个错错误,但但是该属属性仍然然会保留留其现有有值定义与使使用属性性为了在生生成文件件的

6、其他他部分引引用这个个属性,使用以以下语法法:$metal例如,为为了使用用这样一一个值,它是另另一个属属性的值值的组成成部分,将标签签写成下下面这样样location属性性属性经常常用于引引用文件件系统上上的文件件或目录录,但是是对于使使用不同同路径分分隔符(例如,/与与 )的平台台来说,这样可可能在跨跨越不同同平台时时导致问问题。Ant的的location属属性专门门设计用用于以平平台无关关的方式式包含文文件系统统路径。像下面面这样使使用location来来代替value:location属性性location属性性用于location属性的路路径分隔隔字符将将被转换换为当前前平台的的正确

7、格格式;而而且由于于文件名名是相对对的,它它被认为为是相对对于项目目的基目目录。我我们同样样可以容容易地写写为下面面这样:这个标签签的两个个版本都都会在不不同的平平台具有有相同的的行为定义依赖赖关系生成一个个项目一一般需要要许多步步骤例如首先先要编译译源代码码,然后后将它打打包为Java归档文件件(Java ArchiveFile,JAR)。这其其中许多多步骤都都具有清清楚定义义的顺序序例如,在在编译器器从源代代码生成成类文件件之前,您不能能打包类类文件。与顺序序指定target所不同的的是,Ant采用一种种更灵活活的方法法来定义义 依赖赖关系。每个个目标的的定义依依据的是是在它能能够执行行之

8、前必必须完成成的其他他所有目目标。这这是使用用target元素的depends属性来实实现的定义依赖赖关系定义依赖赖关系这种方法法允许您您执行项项目任何何阶段的的生成过过程;Ant会首先执执行已定定义的先先决阶段段。在上上面的例例子中,如果让让Ant完成compile步骤,它它将判断断出需要要首先执执行init和preprocess这两个目目标。init目标不依依赖其他他任何目目标,因因此它将将首先被被执行。然后Ant检查preprocesstarget,发现它它依赖init目标;由由于已经经执行了了后者,Ant不会再次次执行它它,因而而开始执执行preprocess目标。最最后可以以执行co

9、mpile任务本身身。注意目标标出现在在生成文文件中的的顺序并并不重要要:执行顺序序是由depends属性唯一一确定的的。从命令行行运行Ant从命令提提示符调调用Ant可以简单单得只需需键入单单独的ant。如果您您这样做做,Ant将使用默认的生生成文件件;该生成成文件中中指定的的默认目目标就是是Ant尝试要生生成的目目标。还还可以指指定许多多命令行行选项,后面跟跟着任意意数量的的生成目目标,Ant将按顺序序生成这这其中的的每个目目标,并并在此过过程中解解决所有有依赖关关系命令行选选项默认情况况下,Ant寻寻找一一个名为为build.xml 的文文件。因因此,如如果您的的生成文文件使用用这个名名

10、称,就就不需要要在命令令行指定定它。当当然,有有时使用用具有其其他名称称的生成成文件更更方便,在那样样的情况况下,您您需要对对 Ant使使用-buildfile 参参数(-f是是其简简写形式式)命令行选选项另一个有有用的选选项是-D,它用于于设置随随后可以以在生成成文件中中使用的的属性。这对于于配置您您想要以以某种方方式开始始的生成成过程是是非常有有用的。例如,为了将将name属性设置置为某个个特定的的值,您您会使用用一个类类似下面面这样的的选项:-Dmetal=beryllium命令行选选项这个功能能可用于于覆盖生生成文件件中的初初始属性性设置。正如前前面指出出过的,属性的的值一经经设置就就

11、不能改改变。-D标标志在读读取生成成文件中中的任何何信息之之前设置置某个属属性;由由于生成成文件中中的指派派落在这这个初始始指派之之后,因因此它不不会改变变其值IDE集成编译源代代码这个标签签寻找src目录中以以.java为扩展名名的所有有文件,并对它它们调用用javac编译器,从而在在相同的的目录中中生成类类文件。当然,将类文文件放在在一个单单独的目目录结构构中通常常会更清清晰;可可以通过过添加destdir属性来让让Ant做到这点点IDE集成其他有用用的属性性包括classpath:等价于于javac的-classpath选项。debug=true:指示编编译器应应该带调调试信息息编译源源

12、文件。IDE集成javac任务的一一个重要要特点在在于,它它仅编译译那些它它认为需需要编译译的源文文件。如如果某个个类文件件已经存存在,并并且对应应的源文文件自从从该类文文件生成成以来还还没有改改变过,那么该该源文件件就不会会被重新新编译。javac任务的输输出显示示了实际际被编译译的源文文件的数数目。这种行为为刻画了了Ant的许多任任务的特特点:如如果某个个任务能能够确定定所请求求的操作作不需要要执行,那么该该操作就就会被跳跳过。IDE集成创建JAR文件在编译Java源文件之之后,结结果类文文件通常常被打包包到一个个JAR文件中,这个文文件类似似zip归档文件件。每个个JAR文件都包包含一个

13、个清单文文件,它它可以指指定该JAR文件的属属性下面是Ant中jar任务的一一个简单单使用例例子:IDE集成这将创建建一个名名为package.jar的的 JAR文文件,并并把classes 目录录中的所所有文件件添加到到其中(JAR文件能能够包含含任意类类型的文文件,而而不只是是类文件件)。此此处没有有指定清清单文件件,因此此 Ant将将提供一一个基本本的清单单文件IDE集成manifest属属性允许许指定一一个用作作该JAR文文件的的清单的的文件。清单文文件的内内容还可可以使用用 manifest任务在在生成文文件中指指定。这这个任务务能够向向文件系系统写入入一个清清单文件件,或者者能够实

14、实际嵌套套在jar之之内,以便一一次性地地创建清清单文件件和JAR文文件。IDE集成IDE集成时间戳生生成在生成环环境中使使用当前前时间和和日期,以某种种方式标标记某个个生成任任务的输输出,以以便记录录它是何何时生成成的,这这经常是是可取的的。这可可能涉及及编辑一一个文件件,以便便插入一一个字符符串来指指定日期期和时间间,或将将这个信信息合并并到JAR或zip文件的文文件名中中。这种需要要是通过过简单但但是非常常有用的的tstamp任务来解解决的。这个任任务通常常在某次次生成过过程开始始时调用用,比如如在一个个init目标中。这个任任务不需需要属性性,许多多情况下下只需就足够了了IDE集成ts

15、tamp不不产生生任何输输出;相相反,它它根据当当前系统统时间和和日期设设置Ant属属性。下面是是 tstamp设设置的一一些属性性、对每每个属性性的说明明,以及及这些属属性可被被设置到到的值的的例子IDE集成IDE集成在调用tstamp 任务务之后,我们能能够根据据日期命命名该JAR 文件件,如下下所示:IDE集成综合lab文件系统统操作创建和删删除目录录最基本的的文件系系统操作作之一就就是创建建目录或或文件夹夹。做这这项工作作的任务务名为mkdirmkdir任务的另另一个有有用特性性是它的的如下能能力:在在父目录录还不存存在时创创建它们们如果目标标目录已已经存在在,mkdir任务不会会发出

16、错错误消息息,而只只是假设设它的工工作已经经完成,从而什什么也不不做文件系统统操作删除目录录这将删除除指定的的目录连连同它包包含的所所有文件件以及子子目录。使用file属性而不不是dir属性可以以指定要要删除的的单个文文件文件系统统操作复制和移移动文件件及目录录还可以使使用move来执行重重命名操操作而不不是拷贝贝文件另一个常常用的文文件系统统操作是是将文件件复制或或移动到到另一个个目录文件系统统操作默认情况况下,Ant仅输出它它执行的的移动和和复制操操作的摘摘要,包包括诸如如已移动动或复制制的文件件的数量量等信息息。如果果想看到到更详细细的信息息,包括括涉及的的文件名名称等,可以将将verb

17、ose属性设置置为true创建和解解压缩zip文件解压缩和和提取文文件还可以包包括overwrite属性来控控制覆盖盖行为。默认设设置是覆覆盖与正正在被提提取的归归档文件件中的条条目相匹匹配的所所有现有有文件替换文件件中的标标记replace任务,它它执行文文件中的的查找和和替换操操作。token属性指定定要查找找的字符符串,value属性指定定一个新新的字符符串,查查找到的的标记字字符串的的所有实实例都被被替换为为这个新新的字符符串。例例如:替换文件件中的标标记替换操作作将在文文件本身身之内的的适当位位置进行行。为了了提供更更详细的的输出,可把summary属属性设置置为true。这将导导致

18、该任任务输出出找到和和替换的的标记字字符串实实例的数数目模式匹配配可以对目目录执行行模式匹匹配。例例如,模模式src*/*.java将将匹配带带 src前前缀的任任何目录录中的所所有Java文文件。还有另一一种模式式结构:*,它匹配配任意数数量的目目录。例例如,模模式*/*.java将将匹配配当前目目录结构构下的所所有Java 文件件。模式匹配配模式匹配配fileset默认情况况下包含含指定src目录下的的所有文文件,因因此为了了仅选择择Java文件,我我们对模模式使用用一个include元素。类类似地,我们可可以对另另一个模模式添加加一个exclude元素,从从而潜在在地排除除include指定的匹匹配项。甚至可可以指定定多个include和exclude元素;这这样将得得到一组组文件和和目录,它们包包含include模式的所所有匹配配项的并并集,但但排除了了exclude模式的所所有匹配配项默认排除除自动从文文件集内内容中排排除的内内置模式式列表。该列表表包括与与名为CVS的目录相相匹配的的条目,以及以以字符结尾尾的文件件,它们们可能是是备份文文件。通通常不想想在文件件系统操操作中包包括这类类文件和和目录,因此排排除这些些文件是是默认行行为。然然而,如如果确实实想无例例外地选选择所所有文文件和目目录,可可以将文文件集的的defaultexcludes属性设置置为no

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论