こんにちは、開発担当の Masa です。

前回は実装中のテスト(Spock)で groovy のテンプレートエンジンを使用し、問題が発生したところまで書きました。

今日は ant copy を使った代替案について語ります。
尚、Gradle の Copy タスクはエンコーディングの指定方法が分からなかったため、使用を断念しました。

上でも言ったとおり、Gradle のビルドスクリプトからテストを実行しています。
このため ant のビルドファイルで copy タスクを使用してもビルドファイルを使わないので意味がありません。
プログラム上で ant copy を実行することにします。

ant copy のいいところは、置換するトークンの開始終了を示す文字列を好きに設定できるところですね。
groovy のテンプレートエンジン使用時に “$” をエスケープするのが面倒だったので地味に喜ばしいです。

def ant = new AntBuilder()
def binding = new ConfigSlurper().parse(url).flatten()

ant.copy(file : 'C:\\Test\\template.txt', tofile : 'C:\\Test\\hoge.txt', 
         encoding : 'Shift-JIS', overwrite : true) {
  filterset(begintoken: '%{', endtoken: '}') {
    map.each { key, val -> filter(token: key, value: val) }
  }
}

出来ました。ConfigSlurper も使えたし満足です。