Tasks und Typen beisteuern

Wenn Ihr Plug-in Ant-Tasks und -Typen ergänzt, können die Tasks und Typen auf alle Klassen im ergänzenden Plug-in zugreifen. Beispielsweise ist die Task eclipse.refreshLocal, die durch das Plug-in org.eclipse.core.resources ergänzt wird, ein Wrapper für die Methode IResource.refreshLocal().

Durch Plug-ins ergänzte Tasks und Typen dürfen nicht in eine der Plug-in-Bibliotheken gestellt werden, sondern müssen sich in einem separaten JAR befinden. Dies bedeutet, dass die Plug-in-Klassen nicht auf die Tasks und Typen zugreifen können, die durch das Plug-in ergänzt werden  (weitere Informationen finden Sie unter Warum benötigen Tasks und Typen ein separates JAR?).

Der Erweiterungspunkt org.eclipse.ant.core.antTasks bietet ein Beispiel dafür, wie eine neue Tasks in der Datei plugin.xml angegeben wird.

Fortschrittsüberwachungen

Die Ant-Unterstützung von Eclipse ermöglicht den Zugriff auf IProgressMonitor, wenn dies beim Aufruf von AntRunner übergeben wird. Einer der Vorteile des Zugriffs auf eine Fortschrittsüberwachung besteht darin, dass eine lang andauernde Task prüfen kann, ob der Benutzer ihren Abbruch angefordert hat. Das Fortschrittsüberwachungsobjekt wird aus den Verweisen des Ant-Projekts entnommen.  Bitte beachten Sie, dass eine Überwachung nur dann verfügbar ist, wenn die Methode AntRunner.run(IProgressMonitor) mit einer gültigen Fortschrittsüberwachung aufgerufen wurde. Der folgende Codeausschnitt zeigt, wie eine Fortschrittsüberwachung aus dem Projekt der Task erhalten werden kann:

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

Wichtige Regeln für das Ergänzen von Tasks und Typen

Plug-in-Entwickler sollten die folgenden Angaben als Prüfliste verwenden:

Warum benötigen Tasks und Typen ein separates JAR?

Es gibt vor allem zwei Anforderungen für die Ausführung von Ant in Eclipse, die nicht besonders gut in das Plug-in-Modell passen:

Während der Laufzeit können die Klassenpfade der Plug-in-Klassenladeprogramme nicht erweitert werden, und Plug-ins können ihre Abhängigkeiten nicht ändern. Stehen gleichzeitig separate JARs für die Tasks und Typen zur Verfügung, ist eine wirkungsvolle Isolierung vom Lademechanismus der Plug-in-Klassen möglich, da diese zusätzlichen JARs, die durch ein Plug-in deklariert sind, ebenfalls das Hinzufügen des ergänzenden Plug-ins zum Ant-Klassenpfad ermöglichen.

 

Copyright IBM Corporation und Andere 2000, 2003.