Bidrag med opgaver og typer

Når din plugin bidrager med Ant-opgaver og -typer, har opgaverne og typerne adgang til alle klasser i den bidragende plugin. Opgaven eclipse.refreshLocal, som plugin-funktionen org.eclipse.core.resources har bidraget med, er f.eks. indpakning til metoden . IResource.refreshLocal() method.

Opgaver og typer, som plugins bidrager med, må ikke placeres i plugin-biblioteker. De skal anbringes i en separat JAR-fil. Det betyder, at plugin-klasser ikke har adgang til de opgaver og typer, en plugin stiller til rådighed. Hvorfor er en separat JAR-fil nødvendig til opgaver og typer? indeholder flere oplysninger.

Udvidelsespunktet org.eclipse.ant.core.antTasks er et eksempel på, hvordan en ny opgave specificeres i filen plugin.xml.

Statusovervågninger

Eclipse Ant-funktionerne giver adgang til en IProgressMonitor, hvis der sendes en ved aktivering af AntRunner. En af fordelene ved at have adgang til en statusovervågning er, at en langvarig opgave kan kontrollere, om brugeren har anmodet om, at den annulleres. Statusovervågningsobjektet hentes fra Ant-projektets referencer.  Bemærk, at der kun stilles en overvågning til rådighed, hvis metoden AntRunner.run(IProgressMonitor) er kaldt med en gyldig statusovervågning. Følgende kodestykke viser, hvordan du henter en statusovervågning fra opgavens projekt:

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 {
		...
	}
}
}

Vigtige regler for bidrag af opgaver og typer

Følgende fungerer som checkliste for plugin-udviklere:

Hvorfor er en separat JAR-fil nødvendig til opgaver og typer?

Der er to grundlæggende krav til udførelse af Ant i Eclipse, som ikke passer særlig godt til plugin-modellen:

Under runtime kan plugin-klasseindlæsningsfunktioner ikke få udvidet deres CLASSPATH, og plugins kan ikke revidere deres afhængigheder. Samtidig er det godt at have separate JAR-filer til opgaver og typer, da de herved isoleres fra plugin-klasseindlæsningsmekanismen. Når disse ekstra JAR-filer erklæres af en plugin, kan den bidragende plugin også tilføjes Ant-CLASSPATH.