Die in Eclipse integrierte Ant-Unterstützung ermöglicht die programmgestützte Ausführung von Ant-Erstellungsdateien durch Plug-ins. Dies erfolgt über die Klasse AntRunner, die im Plug-in org.eclipse.ant.core enthalten ist.
Der folgende Codeausschnitt gibt ein Beispiel für die Verwendung von AntRunner aus dem Code eines anderen Plug-ins heraus:
import org.eclipse.ant.core.AntRunner; import org.eclipse.core.runtime.IProgressMonitor; ... public void runBuild() { IProgressMonitor monitor = ... AntRunner runner = new AntRunner(); runner.setBuildFileLocation("c:/buildfiles/build.xml"); runner.setArguments("-Dmessage=Building -verbose"); runner.run(monitor); }
Falls eine Fortschrittsüberwachung verwendet wird, so wird sie den ausgeführten Tasks zur Verfügung gestellt. Weitere Details finden Sie unter Fortschrittsüberwachungen.
Bitte beachten Sie, dass jeweils nur eine Ant-Erstellung zur Zeit ausgeführt werden kann, wenn die Erstellungen nicht in unterschiedlichen VMs stattfinden. Weitere Informationen finden Sie unter AntRunner.isBuildRunning().
Bei jeder Ausführung einer Ant-Erstellungsdatei in Eclipse wird ein neues Klassenladeprogramm erstellt. Da eine Bibliothek in Java nur durch ein einziges Klassenladeprogramm geladen werden kann, kann es bei Tasks, die native Bibliotheken verwenden, zu Problemen kommen, wenn mehrere Erstellungsdateien ausgeführt werden. Falls das vorherige Klassenladeprogramm zu dem Zeitpunkt, an dem das neue Klassenladeprogramm versucht die native Bibliothek zu laden, keine Garbage-Collection erstellt hat, wird eine Ausnahmebedingung ausgegeben, die das Problem anzeigt, und die Erstellung schlägt fehl. Eine Möglichkeit für die Vermeidung dieses Problems ist die Verwaltung der geladenen Bibliothek durch eine Klasse innerhalb einer Plug-in-Bibliothek. Die Task kann diese Klasse für den Zugriff auf native Methoden benutzen. Auf diese Weise wird die Bibliothek durch das Plug-in-Klassenladeprogramm geladen und verursacht keinen Konflikt mit der Ladebibliothek.