Dans l'un des fichiers de configuration de mon projet, je dois ajouter du texte. Je cherche des options pour le faire en utilisant Ant.
J'ai trouvé une option - trouver quelque chose et remplacer ce texte par le nouveau texte et les anciennes valeurs. Mais cela ne semble pas être prometteur, car si à l’avenir le fichier original était modifié, la construction échouait.
Donc, j'aimerais que mon script ajoute le texte à la fin du fichier.
Quelles options ai-je pour une telle exigence?
Utilisez la tâche echo :
<echo file="file.txt" append="true">Hello World</echo>
EDIT: Si vous avez du HTML (ou un autre XML arbitraire), vous devriez l’échapper avec CDATA
:
<echo file="file.txt" append="true">
<![CDATA[
<h1>Hello World</h1>
]]>
</echo>
Une autre option consisterait à utiliser un filterchain .
Par exemple, ce qui suit va ajouter le fichier input2.txt
à input1.txt
et écrire le résultat dans output.txt
. Les séparateurs de ligne du système d'exploitation actuel (à partir des propriétés Java disponible dans ant) sont utilisés dans le fichier de sortie. Avant de l'utiliser, vous devez créer output2.txt
à la volée, je suppose.
<copy file="input1.txt" tofile="output.txt" >
<filterchain>
<concatfilter append="input2.txt" />
<tokenfilter delimoutput="${line.separator}" />
</filterchain>
</copy>
La tâche concat chercherait également à le faire. Voir http://ant.Apache.org/manual/Tasks/concat.html pour des exemples, mais le plus pertinent est:
<concat destfile="README" append="true">Hello, World!</concat>
J'ai trouvé les autres réponses utiles, mais sans donner la flexibilité dont j'avais besoin. Vous trouverez ci-dessous un exemple d'écriture d'échos dans un fichier temporaire pouvant être utilisé comme en-tête et pied de page, puis en utilisant la concaténation pour envelopper un document 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"/>