注意点 (3.2)

在构建过程中,有时会需要动态地写入文件的值,通常需要时间戳和版本信息。在<copy>和<move>任务中,支持过滤器集(filterset)。在下面三种典型的情况下,可以发挥已过滤复制的优势:

a)将当前日期和版本信息写入到构建相关的文件中,比如文档。

b)对配置文件有选择地注释。

c)简单生成一些源文件或者数据文件。

在<move>或<copy>任务中,过滤器操作将源文件中某些标记(token)替换为其他文本后传送到目标文件。在含有过滤器的任务中,源文件不会被改变。标记被定义为两个标记终结符之间的内容。这个终结符默认为

 

 

特征(property)

Ant提供了多种内置特征,它们是由运行时设置的。

 

默认情况下,basedir特征指向当前构建文件的路径————我们可以通过在<project>元素中添加一个basedir属性来修改。

扫描二维码关注公众号,回复: 570896 查看本文章

 

在构建文件中,<property value>是设置特征最简单的方法,对于简单值,它是理想的选择。然而,如果要设置文件名和路径,<property value>并不是最好方法,location属性更适合于这个问题。<property>任务中的location属性可以把相对路径转换为绝对位置,并把目录分隔符转换为与目标平台相关的形式。

 

 

所有从特征文件中加载的特征都被加载为简单的字符串值,就像是通过<property value>操作所设置的。为了把它们转换为绝对的值(绝对路径),构建文件需要对它们再设置,比如:

<property name="output.dir.absolute" location="${output.dir}" />

 

3.下面的2中表示是同一个意思

classes:build.xml文件所在的目录下的classes文件

./classes:build.xml文件所在的目录下的classes文件

 

../classes build.xml文件所在目录的父目录下的classes文件

 

 

4.两个关于加载特征文件的问题:其一,如果在文件中使用反斜杠,它需要被重复两次:build.clases=build\\classes

                            其二,如果你拼错了文件名,像是这样:<property file="build.properties">,Ant不会停止构建。事实上,甚至不会发出错误警告,除非以verbose模式(-v)运行Ant。这咋看起来像是一个bug,但这却是经过深思熟虑后的决定:Ant只是给你一个控制构建文件的机会,但它不会强迫你这样做,即并不是非要使用特征文件控制构建文件,如果找不到特征文件,"${build.classes}"同样可以作为一个目录(将直接按字面值使用)。

 

5.特征文件除了可以是properties文件,还是可以txt文件等,你自己试一下吧

 

6.为什么不能复写特征?

特征值一旦被设置就不能改写:特征是不可变的。无论是谁首先设置了特征,其值在构建中就不会再改变。理解这个规律并学会利用它,这对于使用Ant非常重要。这一规则通常会导致构建文件看上去不能正确运行的现象,会让新用户感到困惑和沮丧。

特征值一旦被设定,则无论在构建文件中还是命令行都不能被修改。最先设置者设置后就固定了它的值。

特征值设置的优先级为:命令行 > 特征文件(build.properties) > 特征

猜你喜欢

转载自weigang-gao.iteye.com/blog/2169800
3.2