Oppgaver og typer fra plugin

Når plugin-modulen bidrar med Ant-oppgaver og -typer, har oppgavene og typene tilgang til alle klassene i denne plugin-modulen. For eksempel er oppgaven eclipse.refreshLocal fra plugin-modulen org.eclipse.core.resources en wrapper-funksjon for metoden IResource.refreshLocal().

Oppgaver og typer fra en plugin kan ikke legges i noen av plugin-bibliotekene. De må legges i en separat JAR. Dette betyr at plugin-klasser ikke har tilgang til oppgavene og typene fra plugin-modulen. (Du finner mer informasjon under Hvorfor separat JAR for oppgaver og typer?)

Utvidelsespunktet org.eclipse.ant.core.antTasks inneholder et eksempel på hvordan en ny oppgave kan oppgis, i filen plugin.xml.

Fremdriftsovervåking

Eclipse Ant-støtte gir tilgang til en IProgressMonitor hvis den overføres når AntRunner aktiveres. En av fordelene med å ha tilgang til fremdriftsovervåking er at det er mulig å kontrollere om brukeren har bedt om å avbryte en tidkrevende oppgave. Objektet for fremdriftovervåking hentes fra prosjektreferanser for Ant. Merk at overvåking bare er tilgjengelig hvis metoden AntRunner.run(IProgressMonitor) ble kalt med en gyldig fremdriftsovervåking.Følgende kodesnutt viser hvordan du henter en fremdriftsovervåker fra oppgavens prosjekt:

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.eclipse.ant.core.AntCorePlugin;
import org.eclipse.core.runtime.IProgressMonitor;

public class CoolTask extends Task {

public void execute() throws BuildException {
	IProgressMonitor monitor = 
		(IProgressMonitor) getProject().getReferences().get(AntCorePlugin.ECLIPSE_PROGRESS_MONITOR);
	if (monitor == null) {
		...
	} else {
		...
	}
}
}

Viktige regler ved bruk av oppgaver og typer

Nedenfor ser du en sjekkliste for utviklere av plugin-moduler:

Hvorfor separat JAR for oppgaver og typer?

Det er to krav til kjøring av Ant i Eclipse som bryter med plugin-modellen:

Under kjøretid kan ikke klassebanen til plugin-klasselastere utvides, og det er ikke mulig å endre avhengigheter for plugin-moduler. Samtidig er separate JARer for oppgavene og typene en god isolasjon fra klasseinnlastingsmekanismen for plugin-modulen. Siden disse ekstra JARene kan deklareres av en plugin-modul, kan plugin-modulen som bidrar, legges til i Ant-klassebanen.