property(属性)这个标签很常用,当你在build.xml中定义了property,任务可以随意的引用该property,比如以下代码:
<property value="minghe" name="author"></property>
<target name="test"></target>
<echo>${author}</echo>
当你要引入property,只要使用${property}语法即可。
properties文件的使用
考虑以下需求:build.xml需要提供给第三方使用,第三方本机的代码路径一般都不一样,如果让第三方自己去修改build.xml的路径配置(假如在你的build.xml中有类似的定义),正好该用户不懂得ant,那么面对build.xml,他将无所适从。能不能将配置独立成一个文件,用户只要改那个配置文件即可呢?
ant的.properties文件恰恰解决这个需求。
在build.xml同级目录下建立个build.properties(文件名任意);
键入如下示例代码:
assets.dir = d:\www\htdocs\ant-demo
打开你的build.xml,插入如下代码:
<property file="build.properties"></property>
property的file属性指向build.properties文件,那么ant在执行build.xml前会去找这个文件,build.properties内的属性会覆盖build.xml内的同名属性。
假设你的build.xml有如下property:
<property location="c:\demo" name="assets.dir"></property>
<echo>${assets.dir}</echo>
你可以试下${assets.dir},输出的将是build.properties文件内property值。
value属性和location属性的区别
这二个属性很容易混淆,不少朋友向明河询问,有了value,为什么还需要location呢?二者的作用不是一样的吗?
是的,value和location的功能是接近的,都是property的值,但有些小的区别,如果你的property存储的是路径,那么明河推荐使用location属性,location属性会对路径进行转换,永远返回绝对路径形式。来看实际代码:
<dirname file="${ant.file}" property="current.dir"></dirname>
<property location="${current.dir}/2.0/" name="assets.dir"></property>
<property value="${current.dir}/2.0/" name="assets.dir2"></property>
<target name="location">
<echo>location:${assets.dir}</echo>
<echo>value:${assets.dir2}</echo>
</target>
输出的结果如下:
留意标黄部分的差异,当你使用location属性时,值内所有的“/”都会更换为“\”(即绝对路径的形式),而且还会去掉路径中多余的“/”。所以当你使用location属性存储路径信息时更为安全。
下一篇教程将向各位介绍dataType,之后就是ant的实战部分内容。
转自:http://www.36ria.com/4584