Ant-buildbestanden programmatisch uitvoeren

Dankzij de ingebouwde ondersteuning voor Ant in Eclipse kunt u plugins gebruiken om Ant-buildbestanden programmatisch uit te voeren. Dit doet u via de klasse AntRunner, die is opgenomen in de plugin org.eclipse.ant.core.

In de onderstaande code ziet u een voorbeeld van het gebruik van AntRunner vanuit code van een andere plugin:

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);
}

Als een voortgangsmonitor wordt gebruikt, wordt deze beschikbaar gemaakt voor de actieve taken. Zie Voortgangsmonitors voor meer informatie.

Let op. Er kan slechts één Ant-build tegelijk worden uitgevoerd als de builds niet op afzonderlijke VM's worden uitgevoerd. Zie AntRunner.isBuildRunning().

Aandachtspunten met betrekking tot oorspronkelijke bibliotheken bij builds in dezelfde JRE als het werkgebied

Telkens wanneer een Ant-buildbestand wordt uitgevoerd in Eclipse wordt een nieuwe klassenlader gemaakt. Omdat een bibliotheek slechts door één klassenlader in Java kan worden geladen, kunnen zich problemen voordoen bij taken die gebruikmaken van oorspronkelijke bibliotheken als er meerdere buildbestanden tegelijk worden verwerkt. Als de vorige klassenlader niet is opgeschoond op het moment dat de nieuwe klassenlader de oorspronkelijke bibliotheek probeert te laden, wordt een uitzondering geïnitieerd waarin melding wordt gemaakt van dit probleem en wordt de build afgebroken. U kunt dit probleem omzeilen de bibliotheek te laden via een klasse in een plugin-bibliotheek. De taak kan dan gebruikmaken van die klasse om toegang te krijgen tot oorspronkelijke methoden. Hierdoor wordt de bibliotheek geladen door de pluginklassenlader en treedt er geen conflict op bij het laden van bibliotheken.