生成文件详解
Ant生成文件的根元素是<project/>,每个羡慕可以定义多个生成目标,每个生成目标以一个<target/>元素来定义,他是<project/>元素子元素。而每个<target/>元素又包含需要运行task(如<javac/>, <java/>...)
此外还有<property>元素,用于定义一个或多个属性,Ant生成文件中属性类似于编程语言中宏变量,他们都具有名称和值,与编程语言不同是:Ant生成文件中的属性值不可改变。
2.1) project元素
default : 指定默认target,这个属性是必需。如果运行ant.bat命令时没有显式指定想执行target,Ant将执行该target
basedir : 指定项目的基准路径,生成文件中的其他相对路径都是基于该路径的。
name: 指定项目名,对编译和生成项目没有太大实际作用
description: 指定项目的描述信息,对编译和生成项目没有太大实际作用
2.2) target元素
name: 指定该target的名称,该属性是必需。当Ant运行指定的生成目标时,就是根据该name来确定的。另外,同一个生成文件里不能有两个同名的target元素。
depends: 该属性可指定一个或多个target名,表示运行该target之前应先运行该depends属性所指定的一个或多个target。
if: 该属性指定一个属性名,用属性表示仅当设置了该属性时才执行此target。
unless: 该属性指定一个属性名,用属性表示仅当没有设置该属性时才执行此target
另外,定义任务task的格式如下:
<name attribute1="value1" attribute1="value2">
2.3) property元素
上文提及,Ant文件中的属性值是不可改变的。
定义一个属性最简单形式如下:
如果需要获取属性值,则使用${propName}的形式。例如,如下代码即可获取builddir属性值:
${builddir},譬如
上面代码中的$${builddir}不会获取builddir属性值,而${builddir}才会获取builddir属性值。执行上面任务将会输出:
[echo]${builddir}=dd
PS: 如果在生成文件中使用$符号 ,应该使用$$
property常用属性
name 指定需要设置的属性名
value 指定需要设置的属性值
resource 指定属性文件的资源名称,从而读取属性文件中属性名和属性值
file 指定属性文件的文件名, 从而读取属性文件中属性名和属性值
url 指定属性文件的URL地址, 从而读取属性文件中属性名和属性值
environment 用于指定系统环境变量的前缀
classpath 指定属性文件的文件和路径集
classpathref 指定搜索属性文件的文件和路径及引用
2.4) path元素和classpath元素
<path />元素和<classpath />元素都用于定义文件和路径集,区别是
classpath元素通常作为其他任务子元素,既可以引用已有文件和 目录集,也可临时定义一个文件和目录集;而<path />元素则作为<project />元素子元素,用于定义一个独立的、有名称的文件和目录集,用于被引用。
两者常用子元素
<pathelement>: 用于指定一个或多个目录。
<dirset>: 采用模式字符串的方式指定系列目录。
<fileset>: 采用模式字符串的指定谢列文件。
<filelist>: 采用直接列出系列文件名的方式指定系列文件。
<pathelement />
<dirset />
<filelist />
<fileset />
Comprehensive