Как добавить текст в конец файла с помощью Ant? - PullRequest
21 голосов
/ 17 сентября 2010

В одном из файлов конфигурации для моего проекта мне нужно добавить текст. Я ищу некоторые варианты, чтобы сделать это с помощью Ant.

Я нашел один вариант - найти что-то и заменить этот текст новым текстом и старыми значениями. Но это не кажется многообещающим, так как если в будущем кто-то изменит исходный файл, сборка будет неудачной.

Итак, я бы хотел, чтобы мой скрипт добавил текст в конец файла.

Какие варианты у меня есть для такого требования?

Ответы [ 4 ]

42 голосов
/ 17 сентября 2010

Используйте задачу 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>
6 голосов
/ 25 апреля 2012

Задача concat также может быть выполнена.См. http://ant.apache.org/manual/Tasks/concat.html для примеров, но подходящим является:

<concat destfile="README" append="true">Hello, World!</concat>
6 голосов
/ 17 сентября 2010

Другой вариант - использовать filterchain .

Например, следующее добавит файл input2.txt к input1.txt и запишет результат в output.txt. В выходном файле используются разделители строк для текущей операционной системы (из свойств java , доступных в ant). Я полагаю, что перед использованием этого вам придется создать output2.txt на лету.

<copy file="input1.txt" tofile="output.txt" >
    <filterchain>
        <concatfilter append="input2.txt" />
        <tokenfilter delimoutput="${line.separator}" />
    </filterchain>
</copy>
0 голосов
/ 25 февраля 2017

Я нашел другие ответы полезными, но не дал необходимой мне гибкости. Ниже приведен пример записи эха во временный файл, который можно использовать в качестве верхнего и нижнего колонтитула, а затем с использованием конкатенации для переноса документа 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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...