一、概述
许多任务都可以通过相当简单的方式定义输入和输出。用于执行外部程序的exec就是一个非常基本的例子。执行的过程可能接受输入,产生输出,或者根据不同的情况只做二者之一或者都做。输出又可以分为输出和错误输出。ant1.6.2起,redirector提供了一种重定向输入和输出的方法,其特点是使用filemapper来指定源文件和目标文件。
二、属性
output:写入输出的文件名。如果没有设置error属性,错误输出会写入此输出中。
error:命令的错误输出重定向到的文件。
logError:当希望在ant日志中看到错误信息,并将输出重定向到文件或属性时,错误信息不包含在输出文件或属性中。如果用error或errorproperty属性重定向错误,此属性会失效。
append:追加(true)还是覆盖(false)输出和错误文件。默认为false。
createemptyfiles:是否创建输出和错误文件,即使是空的。默认为true。
outputproperty:存储输出的属性名。如果错误没有重定向到单独的文件或属性,这个属性也会包含错误输出。
errorproperty:存储命令的错误输出的属性名。
input:命令执行时的输入文件。不能与inputstring同时使用。
inputstring:命令执行时的输入字符串。
inputencoding:输入编码。
outputencoding:输出编码。
errorencoding:错误编码。
alwayslog:ant1.6.3起,除了发送到其他目标外还要发送到日志。默认为false。
loginputstring:ant1.6.3起,在日志消息中控制是否显示inputstring的值,将敏感数据发送到外部程序时设置为false。默认为true。
redirector还支持嵌套以下元素:
inputmapper:用于重定向程序输入的映射器。
outputmapper:用于重定向程序输出的映射器。
errormapper:用于重定向程序错误的映射器。
inputfilterchain:应用于程序输入的过滤器链。
outputfilterchain:应用于程序输出的过滤器链。
errorfilterchain:应用于程序错误的过滤器链。
三、简单示例
<project>
<exec executable="cat">
<redirector outputproperty="out"
errorproperty="err"
inputstring="thi is redirector test."
createemptyfiles="false">
<inputfilterchain>
<replacestring from="redirector" to="Redirector"/>
</inputfilterchain>
<outputmapper type="merge" to="r.out"/>
<errormapper type="merge" to="r.err"/>
</redirector>
</exec>
<echo message="${out}${line.separator}${err}"/>
</project>