私は、適用タスクを使用してファイルのグループに対してスクリプトを実行するantタスクを持っています。 mkdir -p a/{b,c,d,e}/f
オプションのパス引数をantに渡す
通常(私は引数を渡さない場合)、私はすべてのf
の上で実行するように蟻のようになる:
私はこのような何かのディレクトリ構造の結果を持っています。 つまり、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
のみを処理し、他は処理しません。
私は引数を渡す方法を説明するthis SO postを読みました。propertiesとconditionalsに関するantのドキュメントを見てきました。しかし、私はまだ働く方法でそれらをまとめることができません。
また、私はこのような引数を呼びかけSOた上からの提案のいずれかを使用する必要はありません:
<arg value="${arg0}"/>
<arg value="${arg1}"/>
私は、任意のfoo
ためant mytask -foo valueoffoo
としてそれを呼び出すことができるようにしたいです。
ありがとうございました。
私は以下のマーティン・クレイトンの提案をしようとしたようなコードを持っている:
<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の代わりにパターンセットを使用しますが、同じように動作するはずです。
注2:私の元の質問では、ディレクトリ構造はa/{b,c,d,e}/f
だと言いました。実際にはもう少し複雑なので、上のインクルードの*
です。私はそれが関連していないと思われたので、最初は省略しました。
あなたの例のAntコマンドラインには、ターゲット 'mytask'と任意の' foo'が記述されていますが、サンプルビルドファイルはfooというターゲット用です。あなたはおそらく任意のサブパスを渡す必要がありますか?それとも、任意のディレクトリレベルですか? –
@martin clayton:ああ、申し訳ありませんが、あなたは正しいですが、混乱しています。私は自分の質問を修正した。 – yarian
したがって、デフォルトでは、インクルードパターンは '*/*/f'です - コマンドラインからオーバーライドできる部分はありますか? '$ {foo}'部分、または中間の '*' - あるいはその両方でしょうか? –