La plus grande différence est que la Fourmi va s'assurer que les dépendances déclarées par depends
sont appelé plus d'une fois. Par exemple:
<target name="a" />
<target name="b" depends="a" />
<target name="c" depends="a" />
<target name="d" depends="b, c" />
Si je l'appelle cible d
, b
et c
sont appelés. Toutefois, a
n'est appelée qu'une fois (même si les deux b
et c
en dépend).
Supposons maintenant que nous décidons d'utiliser des antcall
au lieu de dépend pour cible d
:
<target name="d">
<antcall target="b" />
<antcall target="c" />
</target>
L'appel de la cible d
fera alors appel à des cibles b
et c
; cependant, la cible a
seront appelés à deux reprises, une fois pour l' b
, puis de nouveau pour c
.
En d'autres termes, antcall
élude la normale règles de dépendances qui sont la pierre angulaire de la Fourmi.
Je ne pense pas qu' antcall
devraient être utilisées comme un substitut à la normale Ant-comme dépendances; c'est ce qu' depends
est pour. Donc, quand vous l'utiliser? L' antcall
de la tâche ne vous permettent de contrôler les propriétés et les références sont définis (c'est pourquoi une nouvelle Ant de l'environnement est créé, et pourquoi c'est si lent), donc il peut être utilisé pour créer des variantes de la même chose; par exemple, peut-être deux pots, l'un avec et l'autre sans les symboles de débogage.
La surutilisation antcall
, cependant, crée lente, fragile, et difficiles à maintenir des scripts de génération. Il pense que le goto
de Ant--c'est mal. La plupart des bien-écrit les scripts de compilation tout simplement n'en avez pas besoin, sauf dans de rares cas.