web-dev-qa-db-fra.com

Comment ajouter du texte à la fin d'un fichier avec Ant?

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?

20
Vijay Shanker Dubey

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>
41
Michael Pilat

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>
6
martin clayton

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>
6
user984707

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"/>
0
James Oravec