一、概述
concat是Ant的内置任务,用于将一个或多个资源连接到一个文件或控制台。除非资源列表为空并且ignoreempty是true,否则都会创建目标文件。从Ant1.7.1开始,concat可以用来作为资源集合使用,只返回唯一的资源。从Ant1.6开始,concat支持filterchain,可以对资源内容进行过滤。
二、属性
destfile:连接流的目标文件,如果不设置的话,会使用控制台代替。
append:destfile指定的文件是否可以追加,默认为“no”。
force:是否写destfile指定的文件,即使所有的文件都没有更新。已弃用,使用overwrite代替,默认为“yes”。
overwrite:从Ant1.8.2开始,是否写destfile指定的文件,即使所有的文件都没有更新。默认为“yes”。
forceReadOnly:从Ant1.8.2开始,是否覆盖只读的目标文件。默认为“false”。
encoding:设置输入文件编码。默认为平台的默认字符编码。
outputencoding:Ant1.6引入的输出文件编码,如果encoding已设置,则为encoding值,否则为JVM默认编码。
fixlastline:设置是否检查每一行是否是文件结束。如果设置为“yes”,当一个文件结束时,下一个文件会追加到新的一行中,Ant1.6起默认值为“no”。
eol:设置fixlastline属性使用哪种行结束符号。从Ant1.6起,有效值为cr、lf、crlf、mac、unix、dos。默认值与平台相关,Unix默认为lf,基于dos的默认为crlf,Mac默认为cr。
binary:从Ant1.6.2起,如果设置为true,会按字节的方式将文件连接到一起,否则,由于字符编码的问题,对于二进制的文件不能进行连接操作。如果设置为true,那么必须设置destfile属性,并且concat不能使用嵌套文本,还有encoding、outputencoding、filelastline属性也不能使用。默认为false。
ignoreempty:从Ant1.8.0起,设置当资源列表为空时,是否创建destfile指定的文件,默认为true。
resourcename:从Ant1.8.3起,设置当concat作为资源时的名字。
ant1.6起,嵌套元素header、footer可以用于将文本提前或延迟到连接的流中,文本可以是内联的也可以是在文件中。属性:
filtering:是否过滤子元素提供的文本,默认为“yes”。
file:放置在连接文本头部或尾部的文件。
trim:是否去掉整个文本前后空格。默认为“no”。
trimleading:是否去掉每行前的空格。
三、简单示例
<project>
<concat destfile="r/first.txt" forceReadOnly="true" >hello ant!</concat>
<concat destfile="r/second.txt" append="true" fixlastline="no" >
<fileset dir="a" includes="*.*"/>
<header filtering="no" trim="no" trimleading="yes">
Lines that contain project
==========================
</header>
</concat>
<concat destfile="r/first.txt" append="true" fixlastline="no" binary="true">
<fileset dir="a" includes="*.*"/>
</concat>
<concat destfile="none.txt" ignoreempty="true">
<fileset dir="a" includes="*.abc"/>
</concat>
</project>