Taken en typen toevoegen

Wanneer u Ant-taken en -typen aanlevert met uw plugin, hebben deze taken en typen toegang tot alle klassen in de aanleverende plugin. Zo is de taak eclipse.refreshLocal, die wordt aangeleverd door de plugin org.eclipse.core.resources, een wrapper voor de methode IResource.refreshLocal().

Taken en typen die worden aangeleverd door plugins mogen niet in een van de plugin-bibliotheken worden geplaatst. Ze moeten in een afzonderlijk JAR-bestand worden geplaatst. Hierdoor hebben de pluginklassen geen toegang tot de taken en typen die door de plugin worden aangeleverd. (Zie Taken en typen moeten in een afzonderlijk JAR-bestand worden geplaatst voor meer informatie.)

Zie het extensiepunt org.eclipse.ant.core.antTasks voor een voorbeeld van het opgeven van een nieuwe taak in het bestand plugin.xml.

Voorgangsmonitors

Via de ondersteuning voor Ant in Eclipse hebt u toegang tot een IProgressMonitor als er een wordt doorgegeven bij het aanroepen van AntRunner. Een van de voordelen van het hebben van toegang tot een voortgangsmonitor is dat tijdens een tijdrovende taak kan worden gecontroleerd of de gebruiker deze wil annuleren. Het voortgangsmonitorobject wordt verkregen via de Ant-projectverwijzingen. Een monitor wordt alleen beschikbaar gemaakt als de methode AntRunner.run(IProgressMonitor) is aangeroepen met een geldige voortgangsmonitor.In de volgende korte code wordt een voortgangsmonitor verkregen op basis het project van de taak:

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

Belangrijke regels voor het toevoegen van taken en typen

Pluginontwikkelaars dienen rekening te houden met het volgende (te gebruiken als checklist):

Taken en typen moeten in een afzonderlijk JAR-bestand worden geplaatst

Er zijn twee basisvereisten voor het uitvoeren van Ant in Eclipse die niet goed aansluiten bij het pluginmodel:

Tijdens de uitvoering kunnen de klassenpaden van plugin-klassenladers niet worden uitgebreid en kunnen de dependency's van plugins niet worden gewijzigd. Tegelijkertijd is het hebben van afzonderlijke JAR-bestanden voor de taken en typen een goede manier om deze te scheiden van het mechanisme voor het laden van pluginklassen. Doordat deze extra JAR-bestanden worden gedeclareerd door een plugin, wordt het mogelijk om de aanleverende plugin ook aan het Ant-klassenpad toe te voegen.