適用タスクを使用してファイルのグループに対してスクリプトを実行するantタスクがあります。
私はこのようなものの結果としてのディレクトリ構造を持っています:
mkdir -p a/{b,c,d,e}/f
f
通常(引数を渡さない場合)、antをすべてのsで実行したいと思います。つまり、を呼び出した場合、次ant mytask
の処理を行う必要がありますa/b/f, a/c/f, a/d/f, a/e/f
。これは、applyとpatternsetを使用してすでに機能します。
ただし、と呼ばれるオプションの引数を渡すとfoo
、でスクリプトを呼び出すだけで済みますa/foo/f
。
したがって、私が電話した場合ant mytask -foo b
、それは他のものではなく、のみ処理する必要がa/b/f
あります。
引数を渡す方法を説明しているこのSOの投稿を読み、プロパティと条件に関するantのドキュメントを確認しました。しかし、私はまだそれらをうまく機能する方法でつなぎ合わせることができません。
また、次のような議論を求めた上記のSOからの提案の1つを使用したくありません。
<arg value="${arg0}"/>
<arg value="${arg1}"/>
ant mytask -foo valueoffoo
任意のと呼べるようにしたいと思いますfoo
。
ありがとう。
私は以下のマーティン・クレイトンの提案を試し、次のようなコードを持っています:
<target name="mytask">
<property name="foo" value="*" />
<apply executable="perl">
<arg value="somescript"/>
<dirset id="them" dir="a">
<include name="${foo}/*/f" />
</dirset>
</apply>
</target>
上記は私が望むことをします。
注1:実際のコードでは、dirsetの代わりにpatternsetを使用していますが、同じように機能するはずです。
注2:私の最初の質問で、ディレクトリ構造はであると言いましたa/{b,c,d,e}/f
。実際にはもう少し複雑なので、*
上記のインクルードに含まれています。関連性がないと思われたので、最初はそれを省略しました。