ANT自动化脚本编译课件

上传人:风*** 文档编号:240743986 上传时间:2024-05-04 格式:PPTX 页数:53 大小:398.35KB
返回 下载 相关 举报
ANT自动化脚本编译课件_第1页
第1页 / 共53页
ANT自动化脚本编译课件_第2页
第2页 / 共53页
ANT自动化脚本编译课件_第3页
第3页 / 共53页
点击查看更多>>
资源描述
ANTANT自动化脚本编译自动化脚本编译研发中心研发中心研发中心研发中心/软件产品线软件产品线软件产品线软件产品线曹锋曹锋曹锋曹锋2013201320132013年年年年1 1 1 1月月月月5 5 5 5日日日日Ant 是什么是什么Apache Ant 是一个基于 Java 的生成工具。据最初的创始人 James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具)的首字母缩写。Ant的作用的作用生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重要Ant的优势Ant 定义生成文件之间的依赖关系,它使用跨平台的 Java 类。使用 Ant,您能够编写单个生成文件,这个生成文件在任何 Java 平台上都一致地操作(因为 Ant 本身也是使用 Java 语言来实现的),这就是 Ant 最大的优势Ant 生成文件剖析生成文件剖析Ant 没有定义它自己的自定义语法;相反,它的生成文件是用 XML 编写的。存在一组 Ant 能够理解的预定义 XML 元素,而且还可以定义新的元素来扩展 Ant 的功能。每个生成文件由单个 project 元素组成,该元素又包含一个或多个 target 元素。一个目标(target)是生成过程中已定义的一个步骤,它执行任意数量的操作,比如编译一组源文件。并且这些操作本身是由其他专用任务标签执行的Ant 生成文件剖析生成文件剖析然后这些任务将根据需要被分组到各个 target 元素中。一次生成过程所必需的所有操作可以放入单个 target 元素中,但是那样会降低灵活性。将那些操作划分为逻辑生成步骤,每个步骤包含在它自己的 target 元素中,这样通常更为可取。这样可以执行整体生成过程的单独部分,却不一定要执行其他部分。例如,通过仅调用某些目标,您可以编译项目的源代码,却不必创建可安装的项目文件Ant 生成文件剖析生成文件剖析顶级 project 元素需要包含一个 default 属性,如果在 Ant 被调用时没有指定目标,这个属性将指定要执行的目标。然后需要使用 target 元素来定义该目标本身。下面是一个最基本的生成文件Ant 生成文件剖析生成文件剖析更进一步A simple project introducing the use of descriptive tags in Ant build files.更进一步可以看出,XML 注释可以使用在整个生成文件中以提高清晰性。而且,Ant 定义了它自己的description 元素和 description 属性,它们可用于提供更结构化的注释。属性属性Ant 中的属性类似编程语言中的变量,它们都具有名称和值。然而与通常的变量不同,一经设置,Ant 中的属性就不可更改;它们是不可变的,就像 Java 语言中的 String 对象。这起初看来似乎很有限制性,但这样是为了遵循 Ant 的简单原则:毕竟,它是一个生成工具,而不是一种编程语言。如果尝试给某个现有属性赋予一个新的值,这不会被看作是一个错误,但是该属性仍然会保留其现有值定义与使用属性为了在生成文件的其他部分引用这个属性,使用以下语法:$metal例如,为了使用这样一个值,它是另一个属性的值的组成部分,将标签写成下面这样location属性属性经常用于引用文件系统上的文件或目录,但是对于使用不同路径分隔符(例如,/与)的平台来说,这样可能在跨越不同平台时导致问题。Ant 的 location 属性专门设计用于以平台无关的方式包含文件系统路径。像下面这样使用 location 来代替value:location属性location属性用于 location 属性的路径分隔字符将被转换为当前平台的正确格式;而且由于文件名是相对的,它被认为是相对于项目的基目录。我们同样可以容易地写为下面这样:这个标签的两个版本都会在不同的平台具有相同的行为定义依赖关系定义依赖关系生成一个项目一般需要许多步骤 例如首先要编译源代码,然后将它打包为 Java 归档文件(Java Archive File,JAR)。这其中许多步骤都具有清楚定义的顺序 例如,在编译器从源代码生成类文件之前,您不能打包类文件。与顺序指定 target 所不同的是,Ant 采用一种更灵活的方法来定义 依赖关系。每个目标的定义依据的是在它能够执行之前必须完成的其他所有目标。这是使用 target 元素的 depends 属性来实现的定义依赖关系定义依赖关系定义依赖关系定义依赖关系这种方法允许您执行项目任何阶段的生成过程;Ant 会首先执行已定义的先决阶段。在上面的例子中,如果让 Ant 完成 compile 步骤,它将判断出需要首先执行 init 和preprocess 这两个目标。init 目标不依赖其他任何目标,因此它将首先被执行。然后 Ant 检查 preprocesstarget,发现它依赖 init 目标;由于已经执行了后者,Ant 不会再次执行它,因而开始执行 preprocess 目标。最后可以执行 compile 任务本身。注意目标出现在生成文件中的顺序并不重要:执行顺序是由depends 属性唯一确定的。从命令行运行从命令行运行 Ant从命令提示符调用 Ant 可以简单得只需键入单独的 ant。如果您这样做,Ant 将使用默认的生成文件;该生成文件中指定的默认目标就是 Ant 尝试要生成的目标。还可以指定许多命令行选项,后面跟着任意数量的生成目标,Ant 将按顺序生成这其中的每个目标,并在此过程中解决所有依赖关系命令行选项命令行选项默认情况下,Ant 寻找一个名为build.xml 的文件。因此,如果您的生成文件使用这个名称,就不需要在命令行指定它。当然,有时使用具有其他名称的生成文件更方便,在那样的情况下,您需要对 Ant 使用-buildfile 参数(-f 是其简写形式)命令行选项命令行选项另一个有用的选项是-D,它用于设置随后可以在生成文件中使用的属性。这对于配置您想要以某种方式开始的生成过程是非常有用的。例如,为了将 name 属性设置为某个特定的值,您会使用一个类似下面这样的选项:-Dmetal=beryllium命令行选项命令行选项这个功能可用于覆盖生成文件中的初始属性设置。正如前面指出过的,属性的值一经设置就不能改变。-D 标志在读取生成文件中的任何信息之前设置某个属性;由于生成文件中的指派落在这个初始指派之后,因此它不会改变其值IDE 集成集成编译源代码编译源代码这个标签寻找 src 目录中以.java 为扩展名的所有文件,并对它们调用 javac 编译器,从而在相同的目录中生成类文件。当然,将类文件放在一个单独的目录结构中通常会更清晰;可以通过添加destdir 属性来让 Ant 做到这点IDE 集成集成其他有用的属性包括classpath:等价于 javac 的-classpath 选项。debug=true:指示编译器应该带调试信息编译源文件。IDE 集成集成javac 任务的一个重要特点在于,它仅编译那些它认为需要编译的源文件。如果某个类文件已经存在,并且对应的源文件自从该类文件生成以来还没有改变过,那么该源文件就不会被重新编译。javac任务的输出显示了实际被编译的源文件的数目。这种行为刻画了 Ant 的许多任务的特点:如果某个任务能够确定所请求的操作不需要执行,那么该操作就会被跳过。IDE 集成集成创建创建 JAR 文件文件在编译 Java 源文件之后,结果类文件通常被打包到一个 JAR 文件中,这个文件类似 zip 归档文件。每个 JAR 文件都包含一个清单文件,它可以指定该 JAR 文件的属性下面是 Ant 中 jar 任务的一个简单使用例子:IDE 集成集成这将创建一个名为 package.jar 的 JAR 文件,并把 classes 目录中的所有文件添加到其中(JAR文件能够包含任意类型的文件,而不只是类文件)。此处没有指定清单文件,因此 Ant 将提供一个基本的清单文件IDE 集成集成manifest 属性允许指定一个用作该 JAR 文件的清单的文件。清单文件的内容还可以使用 manifest任务在生成文件中指定。这个任务能够向文件系统写入一个清单文件,或者能够实际嵌套在 jar 之内,以便一次性地创建清单文件和 JAR 文件。IDE 集成集成IDE 集成集成时间戳生成时间戳生成在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件,以便插入一个字符串来指定日期和时间,或将这个信息合并到 JAR 或 zip 文件的文件名中。这种需要是通过简单但是非常有用的 tstamp 任务来解决的。这个任务通常在某次生成过程开始时调用,比如在一个 init 目标中。这个任务不需要属性,许多情况下只需 就足够了IDE 集成集成tstamp 不产生任何输出;相反,它根据当前系统时间和日期设置 Ant 属性。下面是 tstamp 设置的一些属性、对每个属性的说明,以及这些属性可被设置到的值的例子IDE 集成集成IDE 集成集成在调用 tstamp 任务之后,我们能够根据日期命名该 JAR 文件,如下所示:IDE 集成集成综合lab文件系统操作文件系统操作创建和删除目录创建和删除目录最基本的文件系统操作之一就是创建目录或文件夹。做这项工作的任务名为 mkdirmkdir 任务的另一个有用特性是它的如下能力:在父目录还不存在时创建它们如果目标目录已经存在,mkdir 任务不会发出错误消息,而只是假设它的工作已经完成,从而什么也不做文件系统操作文件系统操作删除目录这将删除指定的目录连同它包含的所有文件以及子目录。使用 file 属性而不是 dir 属性可以指定要删除的单个文件文件系统操作文件系统操作复制和移动文件及目录复制和移动文件及目录还可以使用 move 来执行重命名操作而不是拷贝文件另一个常用的文件系统操作是将文件复制或移动到另一个目录文件系统操作文件系统操作默认情况下,Ant 仅输出它执行的移动和复制操作的摘要,包括诸如已移动或复制的文件的数量等信息。如果想看到更详细的信息,包括涉及的文件名称等,可以将 verbose 属性设置为true创建和解压缩创建和解压缩 zip 文件文件解压缩和提取文件还可以包括 overwrite 属性来控制覆盖行为。默认设置是覆盖与正在被提取的归档文件中的条目相匹配的所有现有文件替换文件中的标记替换文件中的标记replace 任务,它执行文件中的查找和替换操作。token 属性指定要查找的字符串,value 属性指定一个新的字符串,查找到的标记字符串的所有实例都被替换为这个新的字符串。例如:替换文件中的标记替换文件中的标记替换操作将在文件本身之内的适当位置进行。为了提供更详细的输出,可把 summary 属性设置为true。这将导致该任务输出找到和替换的标记字符串实例的数目模式匹配模式匹配可以对目录执行模式匹配。例如,模式 src*/*.java 将匹配带 src 前缀的任何目录中的所有Java 文件。还有另一种模式结构:*,它匹配任意数量的目录。例如,模式*/*.java 将匹配当前目录结构下的所有 Java 文件。模式匹配模式匹配模式匹配模式匹配fileset 默认情况下包含指定 src 目录下的所有文件,因此为了仅选择 Java 文件,我们对模式使用一个 include 元素。类似地,我们可以对另一个模式添加一个 exclude 元素,从而潜在地排除include 指定的匹配项。甚至可以指定多个include 和 exclude 元素;这样将得到一组文件和目录,它们包含 include 模式的所有匹配项的并集,但排除了 exclude 模式的所有匹配项默认排除自动从文件集内容中排除的内置模式列表。该列表包括与名为 CVS的目录相匹配的条目,以及以 字符结尾的文件,它们可能是备份文件。通常不想在文件系统操作中包括这类文件和目录,因此排除这些文件是默认行为。然而,如果确实想无例外地选择 所有 文件和目录,可以将文件集的 defaultexcludes 属性设置为 no。使用使用 CVSCVS task的主要属性是 cvsRoot,它是对 CVS 库的完整引用,包括连接方法和用户详细信息。这个参数的格式如下:method:user:passwordhostname:port/path/to/repository提取是 CVS 任务的默认操作;其他操作可通过使用command 属性来指定使用自定义任务来扩展使用自定义任务来扩展ANT我们将考察一个简单自定义任务的构造过程。这个任务将对文件中的行执行排序操作,并将排序后的行集写到一个新文件中创建自定义的任务创建自定义的任务为实现一个简单的自定义任务,我们所需做的就是扩展 org.apache.tools.ant.Task 类,并重写execute()方法。创建自定义的任务创建自定义的任务大多数任务,不管是核心任务还是自定义任务,都利用属性来控制它们的行为。对于这个简单任务,我们需要一个属性来指定要排序的文件,需要另一个属性来指定排序内容的输出。我们把这两个属性分别叫做 file 和 tofile创建自定义的任务创建自定义的任务在能够调用自定义的任务之前,我们需要给它指定一个名称来 定义 它,并告诉 Ant 关于实现这个任务的类文件的信息,以及定位该类文件所必需的任何 classpath 设置。这是使用 taskdef 任务来完成的,如下所示:创建自定义的任务创建自定义的任务9、春去春又回,新桃换旧符。在那桃花盛开的地方,在这醉人芬芳的季节,愿你生活像春天一样阳光,心情像桃花一样美丽,日子像桃子一样甜蜜。5月-245月-24Saturday,May 4,202410、人的志向通常和他们的能力成正比例。10:25:5510:25:5510:255/4/2024 10:25:55 AM11、夫学须志也,才须学也,非学无以广才,非志无以成学。5月-2410:25:5510:25May-2404-May-2412、越是无能的人,越喜欢挑剔别人的错儿。10:25:5510:25:5510:25Saturday,May 4,202413、志不立,天下无可成之事。5月-245月-2410:25:5510:25:55May 4,202414、Thank you very much for taking me with you on that splendid outing to London.It was the first time that I had seen the Tower or any of the other famous sights.If Id gone alone,I couldnt have seen nearly as much,because I wouldnt have known my way about.。04五月202410:25:55上午10:25:555月-2415、会当凌绝顶,一览众山小。五月2410:25上午5月-2410:25May 4,202416、如果一个人不知道他要驶向哪头,那么任何风都不是顺风。2024/5/410:25:5510:25:5504 May 202417、一个人如果不到最高峰,他就没有片刻的安宁,他也就不会感到生命的恬静和光荣。10:25:55上午10:25上午10:25:555月-24谢谢观看THE END
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!