2

フィルターチェーン要素をサポートするタスク、つまり組み込みの Concat、Copy、LoadFile、LoadProperties、Move タスクで、フィルターチェーンでフィルターを使用しています。

したがって、たとえば、linecontains フィルターを含むフィルターチェーンを使用してファイルをコピーまたは移動します。

linecontains フィルターで negate パラメーターを使用して、その文字列を含む行を除外します。

例: 次のコードを検討してください。

<project default="test">
    <target name="test">
        <copy tofile="file.txt.edit" file="file.txt">
            <filterchain>
                <linecontains negate="true">
                    <contains value="[echo]"/>
                </linecontains>
            </filterchain>
        </copy>
    </target>
</project>

outputs:

$ cat file.txt
[echo] Your project1 location is: D:/Project/Project1
[echo] Your project2 location is: D:/Project/Project2
[script] my script running
[echo] Your project3 location is: D:/Project/Project3
[echo] Your project4 location is: D:/Project/Project4

$ cat file.txt.edit
[script] my script running

Expected:
$ cat file.txt.edit
Your project1 location is: D:/Project/Project1
Your project2 location is: D:/Project/Project2
[script] my script running
Your project3 location is: D:/Project/Project3
Your project4 location is: D:/Project/Project4

ここでフィルターチェーンを使用している場合、行全体が削除されます。[エコー]、[スクリプト]...などの単語だけが必要です。削除する必要があります。

4

1 に答える 1

2

linecontains要素をreplaceregex次のように置き換えます。

<tokenfilter>
    <replaceregex pattern="\[echo\]" replace="" />
</tokenfilter>

複数のトークンの置換については、変更しますpattern="\[(echo|script)\]"

于 2013-04-19T14:56:53.473 に答える