一.Ant简介: Ant----Another Neat Tool,是一个基于Java的跨平台构建工具,作为一个优秀的构建工具Ant有如下的优点: Ø 语法简单,便于学习,如果你使用过XMl,就会更加感觉到这一点; Ø 易于使用,可以减少基于Make方法的大型软件项目中编写makefile的人数; Ø 跨平台,以一种灵巧的方式管理Java的classpath和文件的目录结构; Ø 运行速度快,所有的Java都可以在Ant的JVM中启动; Ø 与Junit测试框架紧密集成以实现极限编程的单元测试; Ø 使用Java语言可以很容易的对他进行扩展; Ø 内置对J2EE的开发的支持,如EJB的编译和打包等; Ø 致力于解决Java项目的部署问题:如FTP,Telnet,应用服务器,SQL命令等,这些都可以自动部署.
Ant的官方网站: http://ant./ Ant的最新版本:Ant 1.6.5 本文所有的例子运行的环境:JDK1.4.2,Ant1.6.2,eclipse3.0
二.介绍Ant的DATATYPE和特性 Ant的核心任务就是target,一个Ant文件有多个target组成,而这些target之间,又有相互的依赖关系--depends,运行的时候默认运行project中指定的target.在构建一个典型的Java工程时,多数的步骤用于处理文件和路径(如classpath),Ant提供的datatype可以很自然的处理这两个概念.文件集和路径以及其他的几种类型的datatype,构成了Ant的构建文件的基本结构.
1.路径(Path) 在javac中我们经常使用的就是classpath,一个路径定义的例子如下: <classpath> <pathelement location =”lib/some.jar”/> </classpath> location允许你指定单个的文件或者目录,也可以通过另一个路径莱扩展当前的路径,使用path来代替location: <classpath> <pathelement path =”build/classes;lib/some.jar”/> </classpath> 路径定义中元素间的分隔符可以使用分号,冒号,路径分隔符可以使用斜杠,反斜杠,不需要考虑操作系统的差异.
2.文件集(Fileset) 所有的构建过程都会隐式的对一系列文件进行操作,Ant将文件集看成一种本地的datatype,下面看一个例子,这个例子是将文件从一个目录copy到另一个目录中: <copy todir=”new_web”> <fileset dir=”web”/> </copy> 在构建过程中我们通常需要包含或者排除一些文件,下面是一些典型的文件集示例: <fileset> <include name="**/*Test.java"/> </fileset> <fileset> <exclude name="**/*.jsp"/> </fileset> 默认情况下,include和exclude中的值是大小写敏感的,可以通过设置casesensitive=”false”,来取消它. 还有在许多情况下,IDE和代码管理系统会生成许多的临时文件,我们不得已要在每个文件集中去设置排除子句,为了避免这种情况,Ant针对这些特殊的模式的排除模式在默认情况下是激活的(例如:**/CVS,**/#*#等),详细模式可以查找相关的文档!.
3.模式集(Patternset) 在文件集中使用Ant的另一个核心datatype:模式集,来实现包含和排除功能.模式匹配功能如下: l * 指代从零到任意长的字符. l ? 指代单一字符. l ** 作为目录名,代表目录树上从当前节电往下的所有目录,可以是零到任意多个目录. l 以/ 或 \结尾的模式意味着结尾是**.
4.选择器(Selector) Ant1.5以上的版本包含了一个精密的新特性,选择器,他用来选择包含在文件集中的文件.介绍几种常用的内建选择器: <filename>:基于模式匹配文件,工作方式类似与模式集的include或exclude元素 <size>:以小于,大于,等于该指定值为条件来选择文件. <date>:以最后修改时间早于,迟于或等于指定值来选择文件. <present>:选择存在于其他目录树的文件. <contains>选择包含指定字符串的文件. 这些选择器都可以被合并到选择器容器中以提供分组和逻辑表达,这些容器就是<and>,<or>,<not>,<none>和<majority> 比较两个目录,并将只在一个目录下存在的文件复制到另一个目录下,我们来结合使用<not>和<present> <copy todir="newfiles"> <fileset dir="web"> <not> <present targetdir="currebtfiles"/> </not> </fileset> </copy> 使用<contains>选择器,我们可以选择只包含特定字符串的文件: <copy todir="newfiles"> <fileset dir="web"> <contains text="System"/> </fileset> </copy>.
这里简单提一下Ant的一个特性:Property,它与java.util.Property在概念上非常相似,它允许在构建文件中自定义特性,并且允许将环境变量作为特性. Property具有特殊的权限,他可以在<target>之外执行,具体的用法,在下面将结合例子说明.
以上介绍了几种Ant的常用datatype,Ant还包括很多的datatype,例如过滤集(Filterset),过滤链(filterchain),过滤阅读器(FilterReader),Mapper映射器,ZipFileset等等,可以通过相关资料来了解! |
|