ant regexpマッパー:ファイルからの読み取りパターン?
質問
ジェネリックアントビルドスクリプトを書きたい <copy>
regexpsに基づいてファイルをオプションに変更できるタスク。ネスト <regexpmapper>
存在する場合、プロジェクト固有のプロパティファイルから名前変更パターンをロードします。
誰かがすでにこれをやったことがありますか、それとも自分のマッパーを書く必要がありますか?
解決
これがどのようにこれを行うかの例です。
プロジェクトプロパティファイル proj_props.txt
含まれる:
use.filter=regexp.mapper
from.regexp=(.*)_test(.*)
to.regexp=\\1\\2
(エスケープに注意してください \
to stringで。)
buildfile:
<property file="proj_props.txt" />
<!-- filter for regexp -->
<filtermapper id="regexp.mapper">
<tokenfilter>
<replaceregex pattern="${from.regexp}"
replace="${to.regexp}" />
</tokenfilter>
</filtermapper>
<!-- identity filter, used when no regexp needed -->
<filtermapper id="identity.mapper" />
<!-- decide which filter to use -->
<condition property="chosen.mapper"
value="regexp.mapper" else="identity.mapper">
<isset property="use.filter" />
</condition>
<copy todir="...">
<fileset>
...
</fileset>
<filtermapper refid="${chosen.mapper}" />
</copy>
あなたはいくつかを定義します filtermapper
インスタンスは、プロジェクトプロパティファイルからのプロパティに基づいてregexp交換を実行するインスタンス、もう1つは何もしないことです。 use.filter
プロパティは、選択されることを決定します。プロジェクトプロパティファイルが存在しない場合 use.filter
設定されないため、「無視」のID Filtermapperが使用されます。
これは、ネストされたリソースをで使用する場合にのみ機能することに注意してください copy
仕事。コピーするファイルが1つしかない場合、使用してください <copy file="..."
, 、Filtermapperは無視されます。
所属していません StackOverflow