如何使用Ant在文件末尾附加一些文本?

时间:2010-09-17 04:01:22

标签: ant append

在我的项目的一个配置文件中,我需要附加一些文本。 我正在寻找使用Ant的一些选项。

我找到了一个选项 - 找到一些内容并用新文本和旧值替换该文本。 但它似乎并不乐观,好像将来某人更改原始文件时,构建将失败。

所以,我希望我的脚本在文件的末尾添加文本。

我对此类要求有哪些选择?

4 个答案:

答案 0 :(得分:42)

使用echo任务:

<echo file="file.txt" append="true">Hello World</echo>

编辑:如果您有HTML(或其他任意XML),您应该使用CDATA转义它:

<echo file="file.txt" append="true">
<![CDATA[
  <h1>Hello World</h1>
]]>
</echo>

答案 1 :(得分:6)

另一种选择是使用filterchain

例如,以下内容会将文件input2.txt附加到input1.txt并将结果写入output.txt。当前操作系统的行分隔符(来自ant中可用的java properties)在输出文件中使用。在使用之前,您必须动态创建output2.txt

<copy file="input1.txt" tofile="output.txt" >
    <filterchain>
        <concatfilter append="input2.txt" />
        <tokenfilter delimoutput="${line.separator}" />
    </filterchain>
</copy>

答案 2 :(得分:6)

concat 任务也会执行此操作。有关示例,请参阅http://ant.apache.org/manual/Tasks/concat.html,但相关的是:

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

答案 3 :(得分:0)

我发现其他答案很有用,但没有给出我需要的灵活性。下面是将echos写入临时文件的示例,该文件可用作页眉和页脚,然后使用串联来包装xml文档。

    <!-- Make header and footer for concatenation -->
    <echo file="header.txt"  append="true">
        <![CDATA[
            <?xml version='1.0' encoding='UTF-8'?>
            <!DOCTYPE foo ...>
        ]]>
    </echo>
    <echo file="footer.txt"  append="true">
        <![CDATA[
            </foo>
        ]]>
    </echo>

    <concat destfile="bigxml.xml">
        <fileset file="header.txt" />
        <fileset file="bigxml-without-wrap.xml" />
        <fileset file="footer.txt" />
    </concat>
    <delete file="header.txt"/>
    <delete file="footer.txt"/>