2012-01-18 4 views
0

オプションのパラメータをantタスク呼び出しに渡したいので、呼び出されたターゲットが省略された場合(条件で重要またはunlessまたはifの属性を使用するときに重要)、呼び出されたターゲットに設定されていないものとして表示されるようにします。 optArgが設定されているかどうかわかりませんので、パラメータをハードコードできません。<ant>タスクコールのオプションパラメータ?

例:AntターゲットsomeTargetはmandatoryArg必須パラメータを必要とし、オプションのパラメータOPTARGをサポートしています。

私はそうのようなcludgy重複することによって、これを達成することができます:

<if><equals arg1="${optArg}" arg2="true" /> 
    <then> 
     <ant dir="someDir" target="someTarget" inheritAll="false"> 
      <property name="mandatoryArg" value="42" /> 
      <property name="optArg" value="true" /> 
     </ant> 
    </then> 
    <else> 
     <ant dir="someDir" target="someTarget" inheritAll="false"> 
      <property name="mandatoryArg" value="42" /> 
     </ant> 
    </else> 
</if> 

私はアリコールがOPTARGのオプションの本質を失うことなく、重複しないようにif文を省略したいと思います。私はすでにthis questionを見つけましたが、これは別の問題をカバーしています。

私はAnt 1.7とant-contribを使用しています。

アイデア?ありがとう!

編集:それは本当に不可能である理由を説明する回答も受け入れます。

答えて

0

あなたはプロパティセットを構築するために<if>ブロックを使用することによって、あなたが望む動作を取得することができ、その後、<propertyset refid="whatever"/>

+0

して後に単一<ant>タスクコールの内側にそれを参照するかもしれませんが、 'バッククォートでコードスニペットを囲むようにしてくださいこのようにあなたのコードが表示されるようにします。乾杯〜 –

+0

@David:有望だと思うが、どうすればプロパティセットに追加するつもりだろうか?コードサンプルを提供できますか?ありがとう! –

+0

よろしくお願いします。 mandatoryArg *と* optArgを含むプロパティセットを定義します。これは、参照されるたびに動的に評価されます。次に、antcallが発生すると、実際に定義されているプロパティのみが含まれます。だから私は答えを受け入れるだろう。 –

関連する問題