Как добавить текст в конце файла с помощью Ant?
В одном из файлов конфигурации для моего проекта мне нужно добавить текст.
Я ищу некоторые варианты для этого, используя Ant.
Я нашел один вариант - найти что-то и заменить этот текст новым текстом и старыми значениями.
Но это не кажется многообещающим, как если бы в будущем кто-то изменил исходный файл, сборка завершится неудачно.
Итак, я бы хотел, чтобы мой script добавлял текст в конец файла.
Какие параметры у меня есть для такого требования?
Ответы
Ответ 1
Используйте задачу echo:
<echo file="file.txt" append="true">Hello World</echo>
EDIT: если у вас есть HTML (или другой произвольный XML), вы должны избегать его с помощью CDATA
:
<echo file="file.txt" append="true">
<![CDATA[
<h1>Hello World</h1>
]]>
</echo>
Ответ 2
Другой вариант - использовать 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>
Ответ 3
Задача concat будет выглядеть и для этого. См. http://ant.apache.org/manual/Tasks/concat.html для примера, но уместным является следующее:
<concat destfile="README" append="true">Hello, World!</concat>
Ответ 4
Я нашел, что другие ответы полезны, но не дают необходимой мне гибкости. Ниже приведен пример записи echos в файл temp, который можно использовать в качестве верхнего и нижнего колонтитула, а затем с помощью конкатенации для обертывания 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"/>