Concat

描述

将一个或多个 资源 连接到单个文件或控制台。如果资源列表为空且 ignoreemptytrue,则除非目标文件存在,否则将创建目标文件。

自 Apache Ant 1.7.1 起,此任务可以用作 资源集合,它将返回恰好一个 资源

资源集合 用于选择要连接的资源。没有单个属性来指定要连接的单个资源。

参数

属性 描述 必需
destfile 连接流的目标文件。如果未指定,则将使用控制台。
append 指定是否应追加 destfile 指定的文件。 否;默认为 no
force 指定是否应将 destfile 指定的文件写入,即使它比所有源文件更新。已弃用,请改用 overwrite 属性。 否;默认为 yes
overwrite 指定是否应将 destfile 指定的文件写入,即使它比所有源文件更新。自 Ant 1.8.2 起 否;默认为 yes
forceReadOnly 覆盖只读目标文件。自 Ant 1.8.2 起 否;默认为 false
encoding 指定输入文件的编码。有关可能值的列表,请参阅 支持的编码 否;默认为默认 JVM 字符编码
outputencoding 写入输出文件时要使用的编码。自 Ant 1.6 起 否;默认为 encoding(如果已设置)或默认 JVM 字符编码(否则)
fixlastline 指定是否检查连接的每个文件是否以换行符结尾。如果此属性为 yes,则如果文件没有以换行符结尾,则会将换行符追加到流中。自 Ant 1.6 起。此属性不适用于嵌入式文本。 否;默认为 no
eol 指定 fixlastline 属性使用的换行符。自 Ant 1.6 起 此属性的有效值为
  • cr:单个 CR
  • lf:单个 LF
  • crlf:CRLF 对
  • mac:单个 CR
  • unix:单个 LF
  • dos:CRLF 对
否;默认值取决于平台:Unix 为 lf,DOS 系列(包括 Windows)为 crlf,Mac OS 9 或更早版本为 cr
binary 自 Ant 1.6.2 起 如果此属性设置为 true,则任务将以字节为单位连接文件。如果此属性为 false,则由于字符编码问题,连接通常不适用于二进制文件。如果此选项设置为 true,则必须设置 destfile 属性,并且任务不能使用嵌套文本。此外,encodingoutputencodingfilelastline 属性也不能使用。 否;默认为 false
filterbeforeconcat 如果此属性设置为 true,则任务在应用 fixlastline 后将过滤器链应用于每个输入。如果此属性为 false,则连接将仅对已连接的输入应用一次过滤器链。headerfooter 的过滤不受此设置的影响。自 Ant 1.10.10 起 否;默认为 false
ignoreempty 自 Ant 1.8.0 起 指定是否应创建 destfile 指定的文件,即使源资源列表为空。 否;默认为 true
resourcename 自 Ant 1.8.3 起 指定如果此任务作为 资源 公开,则报告的名称。

作为嵌套元素指定的参数

资源集合

自 Ant 1.7 起.

任何 资源集合 类型都可以指定要连接的资源。

filterchain

自 Ant 1.6 起.

此任务支持嵌套的 FilterChain

header, footer

自 Ant 1.6 起.

用于将文本预先附加或追加到连接的流中。

文本可以是内联的,也可以在文件中。

属性 描述 必需
filtering 是否过滤此子元素提供的文本。 否;默认为 yes
file 要放置在连接文本的开头或结尾的文件。
trim 是否修剪值。 否;默认为 no
trimleading 是否修剪每行开头的空格。 否;默认为 no

示例

将字符串连接到文件

<concat destfile="README">Hello, World!</concat>

将一系列文件连接到控制台

<concat>
  <fileset dir="messages" includes="*important*"/>
</concat>

连接单个文件,如果目标文件存在则追加

<concat destfile="NOTES" append="true">
  <filelist dir="notes" files="note.txt"/>
</concat>

连接一系列文件,仅在目标文件比所有源文件旧时更新目标文件

<concat destfile="${docbook.dir}/all-sections.xml"
        force="no">
  <filelist dir="${docbook.dir}/sections"
            files="introduction.xml,overview.xml"/>
  <fileset dir="${docbook.dir}"
           includes="sections/*.xml"
           excludes="introduction.xml,overview.xml"/>
</concat>

连接一系列文件,扩展 Ant 属性。

<concat destfile="${build.dir}/subs">
  <path>
    <fileset dir="${src.dir}" includes="*.xml"/>
    <pathelement location="build.xml"/>
  </path>
  <filterchain>
    <expandproperties/>
  </filterchain>
</concat>

过滤 build.xml 中包含 project 的行,并将它们输出到 report.output,并在前面加上标题。

<concat destfile="${build.dir}/report.output">
  <header filtering="no" trimleading="yes">
      Lines that contain project
      ==========================
  </header>
  <path path="build.xml"/>
  <filterchain>
    <linecontains>
      <contains value="project"/>
    </linecontains>
  </filterchain>
</concat>

连接多个二进制文件。

<concat destfile="${build.dir}/dist.bin" binary="yes">
  <fileset file="${src.dir}/scripts/dist.sh"/>
  <fileset file="${build.dir}/dist.tar.bz2"/>
</concat>