Udfør Ant-byggefiler programmatisk

Den indbyggede Ant-understøttelse i Eclipse gør det muligt at lade plugins udføre Ant-byggefiler programmatisk. Det gøres via den AntRunner-klasse, som er inkluderet i plugin-funktionen org.eclipse.ant.core.

Følgende kodestykke viser et eksempel på, hvordan du bruger AntRunner fra koden til en anden 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);
}

Hvis der bruges statusovervågning, stilles den til rådighed for de opgaver, der udføres. Statusovervågninger indeholder flere oplysninger.

Bemærk, at der kun kan foregå én Ant-bygning på ethvert givet tidspunkt, hvis bygningerne ikke foregår i separate VM'er. Se AntRunner.isBuildRunning();

Særlig fokus på indbyggede biblioteker, hvis bygningen foregår i samme JRE som arbejdsområdet

Hver gang en Ant-byggefil udføres i Eclipse, oprettes der en ny klasseindlæsningsfunktion. Da et bibliotek kun kan indlæses af én klasseindlæsningsfunktion i Java, kan opgaver, som gør brug af indbyggede biblioteker, løbe ind i problemer, når byggefiler udføres mange gange. Hvis den forrige klasseindlæsningsfunktion ikke er renoveret på det tidspunkt, hvor den nye klasseindlæsningsfunktion forsøger at indlæse det indbyggede bibliotek, returneres der en undtagelse, som angiver problemet, og bygningen udføres ikke. En måde at undgå problemet på er ved at lade biblioteksindlæsningen håndtere af en klasse i et plugin-bibliotek. Opgaven kan gøre brug af den pågældende klasse, når den opretter adgang til indbyggede metoder. På den måde indlæses biblioteket af plugin-klasseindlæsningsfunktionen, så konflikten med indlæsning af biblioteker undgås.