web-dev-qa-db-ja.com

Antを使用してファイルの最後にテキストを追加するにはどうすればよいですか?

プロジェクトの構成ファイルの1つに、テキストを追加する必要があります。 Antを使用してこれを行うためのいくつかのオプションを探しています。

私は1つのオプションを見つけました-何かを見つけてそのテキストを新しいテキストと古い値で置き換えることです。しかし、将来的に誰かが元のファイルを変更したかのように、ビルドが失敗するので、それは有望ではないようです。

そのため、スクリプトでファイルの最後にテキストを追加します。

このような要件にはどのようなオプションがありますか?

21

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

別のオプションは filterchain を使用することです。

たとえば、次の例では、ファイルinput2.txtinput1.txtに追加し、結果をoutput.txtに書き込みます。現在のオペレーティングシステムの行セパレーター(antで使用可能な Javaプロパティ から)が出力ファイルで使用されます。これを使用する前に、おそらくoutput2.txtをその場で作成する必要があります。

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

concatタスクもそれを行うように見えます。例については http://ant.Apache.org/manual/Tasks/concat.html を参照してください。ただし、関連するものは次のとおりです。

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

他の回答も役に立ちましたが、必要な柔軟性が得られませんでした。以下は、ヘッダーとフッターとして使用できる一時ファイルにエコーを書き込んでから、連結を使用して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