AntCall

説明

同じビルドファイル内から他のターゲットを呼び出します。 オプションで、プロパティーを指定できます(パラメータはこのコンテキストにあります)。 このタスクは target の外から利用してはいけません。

デフォルトでは、 カレントプロジェクトの全てのプロパティが新しいプロジェクトで利用可能になります。 代わりに、 inheritAll属性をfalse に設定して、 "user"プロパティ(つまり、コマンドラインで渡されるもの)のみを 新しいプロジェクトに渡すこともできます。 どちらの場合でも、 新しいプロジェクトに渡されるプロパティの集合は、 新しいプロジェクトで設定されるプロパティで上書きされます。 (property タスクもご覧ください)

ネストされた property タグを使って、 古いプロジェクトから、 新しいプロジェクトにプロパティを設定することもできます。 inheritAllの設定に関らず、 これらのプロパティは、新しいプロジェクトやプロジェクト内で作成されるどんなプロジェクトへも 常に渡されます。 これにより、自分のサブプロジェクトをパラメータ化できます。 コマンドライン上で定義されたプロパティーは、ネストした <property> 要素で 上書きすることができません。

ネストされた <reference> 要素もまた、 呼び出し側のプロジェクトから、新しいプロジェクトへ、 参照をコピーするのに使われます。 オプションとして別の ID でコピーすることもできます。 ネストされた要素から得られた参照は、 新しいプロジェクト中のターゲットの外側で定義された 既存の参照を上書きします。 しかしながら、ターゲットの内側で定義されたものは、上書きしません。

antcall によってターゲットが実行された場合、 依存するすべてのターゲットは、 任意の新しいパラメータのコンテキスト内で呼ばれます。 例えば、ターゲット "doSomethingElse" が ターゲット "init"に依存している場合、 "doSomethingElse" の antcall は、 呼び出し内で、 "init" を呼び出します。 もちろん、 antcall タスクの中で定義されたプロパティ、 または呼び出し元のターゲットから継承したプロパティは、 固定されており、init タスク内で上書きされません。 さらに "doSomethingElse" タスクにおいても上書きされません。

パラメータ

属性 説明 必須
target 実行するターゲット Yes
inheritAll trueの場合、 全てのプロパティが新しい Ant プロジェクトに渡されます。 デフォルトはtrue No
inheritRefs trueの場合、 全ての参照が新しい Ant プロジェクトに渡されます。 デフォルトはfalse No

inheritRefsの注意

<antcall> は、既存の参照を上書きしません。 inheritRefsに true をセットした場合でもそうです。 呼び出し先のビルドファイルが、呼び出し元のビルドファイルと同じなので、 これは、id 属性を通して、どの参照も全然上書きされないということを意味します。 子プロジェクトから引き継ぐことのできる参照は、 ネストした <reference> 要素か、 タスクにより直接参照が定義(id属性を使わずに)された 場合だけです。

ネストされた要素として指定されるパラメータ

param

指定されたターゲットを実行する前にセットするべきプロパティを指定します。 使用ガイドラインの property を参照してください。

reference

新しいプロジェクトへコピーする参照を選択するのに利用します。 オプションで id を変更できます。

属性 説明 必須
refid 呼び出し元のプロジェクトでの参照の id Yes
torefid 新しいプロジェクトでの参照の id No, defaults to the value of refid.

propertyset

新しいプロジェクトへコピーするプロパティーセットを指定するのに、 複数のpropertysetを利用できます。

Ant 1.6 より.

  <target name="default">
    <antcall target="doSomethingElse">
      <param name="param1" value="value"/>
    </antcall>
  </target>

  <target name="doSomethingElse">
    <echo message="param1=${param1}"/>
  </target>

これは、ターゲット 'doSomethingElse' を実行し、 'param1=value' を出力します。

  <antcall ... >
    <reference refid="path1" torefid="path2"/>
  </antcall>

これは、id path2 を使用して、 新しいプロジェクトに親の path1 の定義をコピーします。


Copyright © 2000-2004 The Apache Software Foundation. All rights Reserved.

[訳注:これは高崎俊史、宮本信二が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]