Antでfilesetのファイル一覧を標準入力としてプログラムに渡す

TwitterでTPPに賛成の論陣を張ったところ、人非人やら非国民やら言われ肩身の狭い今日この頃。正直、反対派がこれが問題だ!と言っている話がまったく問題に見えなかったりで、世間との乖離を感じる次第。

まぁ、それはともかく今日もAntですw

Antにはfileset(あるいはresources)というファイル集合を扱う便利な仕組みがあるものの、Antタスクでない普通のプログラムで使おうとすると、途端に対応方法がわからない。今回のお題は、filesetで定義したファイル群から成る改行区切りのファイル名の一覧を標準入力でプログラムに引き渡すというもの。

結論から言うと、下記のような方法で可能となる。

<fileset id="files" dir="${src}">
    <include name="*.java" />
</fileset>
<pathconvert pathsep="&#xA;" property="filelist" refid="files" />
<java classname="InputTest" fork="true">
    <redirector inputstring="${filelist}" />
    ...
</java>

pathconvertで改行区切りの単一文字列に変更しfilelistプロパティに設定する。標準入力は、redirectorでそのプロパティを文字列として指定すればOK。