AntCall

説明

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

デフォルトでは、現在のプロジェクトのすべてのプロパティが新しいプロジェクトで使用可能になります。または、inheritAll 属性を false に設定すると、「ユーザー」プロパティ(つまり、コマンドラインで渡されたプロパティ)のみが新しいプロジェクトに渡されます。いずれの場合も、新しいプロジェクトに渡されるプロパティのセットは、新しいプロジェクトで設定されたプロパティを上書きします(property タスクも参照してください)。

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

複数のネストされた <param> 要素が同じ名前のプロパティを設定する場合、最後に宣言されたものが優先されます。これは、ビルドファイル内の <property> タスクの動作とは異なりますが、後方互換性の理由によるものです。

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

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

呼び出されたターゲットは新しいプロジェクトで実行されます。これは、呼び出されたターゲットによって設定されたプロパティ、参照などが、呼び出し元のプロジェクトには保持されないことを意味することに注意してください。

ビルドを開始した後でビルドファイルが変更された場合、このタスクの動作は未定義です。

パラメータ

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

inheritRefs に関する注意

<antcall> は、inheritRefs を true に設定しても、既存の参照を上書きしません。呼び出されるビルドファイルは呼び出し元のビルドファイルと同じであるため、id 属性を介して設定された参照は一切上書きされません。子プロジェクトが継承できる参照は、ネストされた <reference> 要素によって定義された参照、または(id 属性を使用せずに)タスクによって直接定義された参照のみです。

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

param

指定されたターゲットを実行する前に設定するプロパティを指定します。使用方法のガイドラインについては、property を参照してください。
これらのプロパティは、コマンドラインで定義するプロパティと同等になります。これらは特別なプロパティであり、inheritAllfalse に設定された追加の <*ant*> タスクでも、常に渡されます(上記参照)。

reference

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

属性 説明 必須
refid 呼び出し元のプロジェクトの参照の id はい
torefid 新しいプロジェクトの参照の id いいえ。デフォルトは refid の値です

propertyset

Ant 1.6 以降.

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

target

Ant 1.6.3 以降.

target 属性を使用する代わりに、ネストされた <target> 要素を使用して複数のターゲットを指定できます。これらは、Ant が指定された順序で、指定されたターゲットを依存関係とする単一のターゲットで呼び出されたかのように実行されます。

属性 説明 必須
name 呼び出されたターゲットの名前。 はい

次のコードは

<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>

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