5.echo:向ant控制台打印消息
echo在调试ant任务时非常有用,也可以在任务执行后打印一些任务完成提示消息等。
实际上echo也可以把消息打印到指定文件,形成build日志,只需要指定file参数即可。
属性 | 说明 |
message | 想要打印的消息 |
file | 消息打印到指定文件 |
append | 将消息追加到已经存在的文件 |
level | 指定消息的类型,有”error”, “warning”, “info”, “verbose”, “debug” |
来看典型的echo任务代码:
<echo message="Hello, world"></echo>
<echo>Hello, world</echo>
<dirname file="./" property="current.dir"></dirname>
<echo>${current.dir}</echo>
echo打印property属性值,是个非常常用的调试技巧。
上述代码中有个dirname,这个任务是用来做啥的呢?接下去看。
6.dirname:获取文件的目录路径
dirname只有二个参数:
属性 | 说明 |
file | 文件路径 |
property | 指定属性名称 |
来看下使用代码:
<project default="build" name="test">
<target name="build"></target>
<dirname file="${ant.file}" property="antfile.dir"></dirname>
<property location="${ant.file}" name="antfile2.dir"></property>
<echo message="${antfile.dir}"></echo>
<echo>${antfile2.dir}</echo>
</project>
明河这里将dirname和property进行比较,二者的输出有明显的区别,dirname只输出目录,property输出完成文件路径,如下图
7.available:验证文件、目录、类的存在性
available任务在防止ant构建时因为文件或目录不存在导致的错误时非常有用。
属性 | 说明 |
property | 属性名 |
value | 属性值,默认为true |
file | 需要验证的文件 |
type | file的类型,验证目录(type=”dir”) or 验证文件 (type=”file”) |
示例代码
<project default="build" name="test">
<target name="build"></target>
<dirname file="${ant.file}" property="antfile.dir"></dirname>
<property location="${antfile.dir}/ui.js" name="ui"></property>
<available property="is" type="file" file="${ui}"></available>
<echo>${is}</echo>
</project>
available的value值永远为一个布尔值。
8.get:从url中获取文件
get用于快速将远程文件保存到指定位置,不止支持http:协议,ftp:,jar:也都是可以的。
属性 | 说明 |
src | 源url |
dest | 目标路径 |
verbose | 是否显示下载进度(100 Kb显示一个“.”) |
usetimestamp | 显示最后修改时间 |
username | ‘BASIC’验证页面的用户名 |
password | ‘BASIC’验证页面的密码 |
来看个demo代码:
<project default="build" name="test">
<target name="build"></target>
<dirname file="${ant.file}" property="antfile.dir"></dirname>
<get usetimestamp="true" verbose="true" dest="${antfile.dir}/36ria-index.html" src="http://www.36ria.com/"></get>
</project>
运行后,如下图:
![2011-10-18 11-41-55](https://i-blog.csdnimg.cn/blog_migrate/2be9a2f7938ef9b941e02176e81111d3.png)
如果要把一批url保存下来该如何处理呢?
<get dest="downloads">
<url url="http://ant.apache.org/index.html"/>
<url url="http://ant.apache.org/faq.html"/>
</get>
9.local:增加个局部属性
为了更好说明local用法,明河先贴出demo代码:
<property value="foo" name="foo"></property>
<target name="step1">
<echo>Before local: foo is ${foo}</echo>
<local name="foo"></local>
<property value="bar" name="foo"></property>
<echo>After local: foo is ${foo}</echo>
</target>
<target name="step2" depends="step1">
<echo>In step2: foo is ${foo}</echo>
</target>
上述代码会输出如下内容:
在step1目标中我们定义了,类似编程语言中的局部变量,改变后foo的输出值为bar,不再是原来定义的foo,有意思的是原来的值不会发生改变,step2目标验证了这一点。也就是说在step1内部定义了local 后,foo这个property的修改不会影响外部property的值。
local这个任务在sequential(循环)中非常常用,讲到sequential时再演示其用法。
10.touch:创建文件,并可以修改文件修改时间
属性 | 说明 |
file | 文件名称 |
datetime | 指定文件修改时间 |
创建一个myfile文件,最后修改时间为当前时间。
<touch file="myfile"></touch>
创建一个myfile文件,最后修改时间为18/10/2010 2:02 pm。
<touch datetime="18/10/2010 2:02 pm" file="myfile"></touch>
转自:http://www.36ria.com/4534