同じビルドファイル内の別のターゲットを、オプションでいくつかのプロパティ(このコンテキストではパラメータ)を指定して呼び出します。このタスクは target の外部では使用できません。
デフォルトでは、現在のプロジェクトのすべてのプロパティが新しいプロジェクトで使用可能になります。または、inheritAll 属性を false
に設定すると、「ユーザー」プロパティ(つまり、コマンドラインで渡されたプロパティ)のみが新しいプロジェクトに渡されます。いずれの場合も、新しいプロジェクトに渡されるプロパティのセットは、新しいプロジェクトで設定されたプロパティを上書きします(property タスクも参照してください)。
ネストされた <param> タグを使用すると、古いプロジェクトから新しいプロジェクトにプロパティを設定することもできます。これらのプロパティは常に新しいプロジェクトに渡され、inheritAll の設定に関係なく、そのプロジェクトで作成されたすべてのプロジェクトに渡されます。これにより、サブプロジェクトをパラメータ化できます。コマンドラインで定義されたプロパティは、ネストされた <param> 要素で上書きできません。
複数のネストされた <param> 要素が同じ名前のプロパティを設定する場合、最後に宣言されたものが優先されます。これは、ビルドファイル内の <property> タスクの動作とは異なりますが、後方互換性の理由によるものです。
ネストされた <reference> 要素を使用して、呼び出し元のプロジェクトから新しいプロジェクトに参照をコピーできます。オプションで別の id でコピーすることもできます。ネストされた要素から取得された参照は、新しいプロジェクトのターゲットの外部で定義されている既存の参照を上書きしますが、ターゲット内で定義されている参照は上書きしません。
ターゲットが antcall で呼び出されると、そのすべての依存ターゲットも新しいパラメータのコンテキスト内で呼び出されます。たとえば、ターゲット doSomethingElse
がターゲット init
に依存している場合、doSomethingElse
の antcall は呼び出し中に init
を呼び出します。もちろん、antcall タスクで定義された、または呼び出し元のターゲットから継承されたプロパティは固定され、init
ターゲット、または実際に doSomethingElse
ターゲットでも上書きできません。
呼び出されたターゲットは新しいプロジェクトで実行されます。これは、呼び出されたターゲットによって設定されたプロパティ、参照などが、呼び出し元のプロジェクトには保持されないことを意味することに注意してください。
ビルドを開始した後でビルドファイルが変更された場合、このタスクの動作は未定義です。
| 属性 | 説明 | 必須 |
|---|---|---|
| target | 実行するターゲット。 | はい |
| inheritAll | trueの場合、すべてのプロパティを新しい Apache Ant プロジェクトに渡します。 |
いいえ。デフォルトは true |
| inheritRefs | trueの場合、すべての参照を新しい Ant プロジェクトに渡します。 |
いいえ。デフォルトは false |
inheritRefs に関する注意<antcall> は、inheritRefs を true に設定しても、既存の参照を上書きしません。呼び出されるビルドファイルは呼び出し元のビルドファイルと同じであるため、id 属性を介して設定された参照は一切上書きされません。子プロジェクトが継承できる参照は、ネストされた <reference> 要素によって定義された参照、または(id 属性を使用せずに)タスクによって直接定義された参照のみです。
指定されたターゲットを実行する前に設定するプロパティを指定します。使用方法のガイドラインについては、property を参照してください。
これらのプロパティは、コマンドラインで定義するプロパティと同等になります。これらは特別なプロパティであり、inheritAll が false
に設定された追加の <*ant*> タスクでも、常に渡されます(上記参照)。
新しいプロジェクトにコピーされる参照を選択するために使用します。オプションで id を変更できます。
| 属性 | 説明 | 必須 |
|---|---|---|
| refid | 呼び出し元のプロジェクトの参照の id。 | はい |
| torefid | 新しいプロジェクトの参照の id。 | いいえ。デフォルトは refid の値です |
Ant 1.6 以降.
propertyset を使用して、新しいプロジェクトにコピーするプロパティのセットを指定できます。
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 を使用して新しいプロジェクトにコピーします。