Meine Frage ist ähnlich wie vermeidende-umbau-voraussetzungen-in-ant Ich brauche jedoch keine erstellten Objekte, sondern aufgerufene Prozesse, so dass die dort erörterten Lösungen für mich nicht funktionieren werden. Zumindest denke ich so - aber ich bin neu bei ant.
Meine Situation ist, dass ich eine Reihe von Ameisen-Ziele zu schreiben, und ich brauche die lets-call-it Einrichtung Ziel einmal und nur einmal ausgeführt werden, unabhängig davon, welches Ziel aufgerufen wird. Hier ist ein stark vereinfachtes Beispiel:
<?xml version="1.0"?>
<project name="Ant_Test" basedir=".">
<target name="setup">
<echo message="In setup" />
</target>
<target name="do.several" depends="setup">
<echo message="In do.several, calling do.first" />
<antcall target="do.first" />
<echo message="In do.several, calling do.second" />
<antcall target="do.second" />
</target>
<target name="do.first" depends="setup">
<echo message="In do.first" />
</target>
<target name="do.second" depends="setup">
<echo message="In do.second" />
</target>
</project>
Ich brauche Einrichtung genau einmal aufgerufen werden, unabhängig davon, ob tun.mehrere , tun.erst , oder do.second aufgerufen werden. Bei meinem naiven Versuch oben führt der Aufruf von do.several zu drei Aufrufen von Einrichtung .
Ich habe daran gedacht, eine Eigenschaft zu setzen (nennen wir sie setup.wurde.aufgerufen ), und die Verwendung dieses Parameters zum bedingten Aufruf von Einrichtung von jedem Ziel aus, aber es scheint, dass die Eigenschaftseinstellung auf den Bereich beschränkt ist, in dem sie vorgenommen wird, wenn also in Einrichtung stelle ich setup.wurde.aufgerufen auf true gesetzt wird, existiert dieser Wert nur innerhalb Einrichtung .
Was übersehe ich? Gibt es einen Abschnitt in den Tutorials oder der Online-Dokumentation, den ich übersprungen habe? Haben Sie irgendwelche Hinweise oder Tipps?