2

単純な ant タスクにあるようなsummary="true"ant タスクに相当するものはありますか? replaceregexpreplace

これが私のユースケースです。次のように、ant 置換タスクを replaceregexp タスクに置き換えています。

<replace dir="${dir}" summary="true" value="" token="Some Text">
    <include name="**/*.jsp" />
</replace>

これになります:

<replaceregexp byline="true">
    <regexp pattern="Some\s*Text"/>
    <substitution expression=""/>
 <fileset dir="${dir}" includes="**/*.jsp"/>
</replaceregexp>

ただし、作成された置換の数を ant ビルドに出力させる方法が見つかりません。にはsummary属性がなくreplaceregexp、ドキュメントにはすぐに使える提案はありません。これは可能ですか?

4

1 に答える 1

2

ReplaceRegexp タスクのソースを読むと、そのような機能はありません。
ant184 => src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java、351 行目:

protected void doReplace(File f, int options) throws IOException {
        File temp = FILE_UTILS.createTempFile("replace", ".txt", null, true, true);

        Reader r = null;
        Writer w = null;
        BufferedWriter bw = null;

        try {
            if (encoding == null) {
                r = new FileReader(f);
                w = new FileWriter(temp);
            } else {
                r = new InputStreamReader(new FileInputStream(f), encoding);
                w = new OutputStreamWriter(new FileOutputStream(temp),
                                           encoding);
            }

            BufferedReader br = new BufferedReader(r);
            bw = new BufferedWriter(w);

            boolean changes = false;

            log("Replacing pattern '" + regex.getPattern(getProject())
                + "' with '" + subs.getExpression(getProject())
                + "' in '" + f.getPath() + "'" + (byline ? " by line" : "")
                + (flags.length() > 0 ? " with flags: '" + flags + "'" : "")
                + ".", Project.MSG_VERBOSE);

loglevel verbose を使用して置換をログに記録することを意味します:
ant -verbose -f yourfile.xml
または
ant -v -f yourfile.xml

Ant ソース配布ファイルを取得し、単にタスク doReplace() メソッドを拡張して、たとえば、新しいタスク属性 'summary' false|true によって制御される置換のカウンターなど、目的の出力を取得します。強化レポート
に 記入して送信できます次の ant リリースで他のユーザーが利用できるようにするためのパッチです。詳細については、こちらを参照してください。

于 2013-02-07T21:05:46.543 に答える