Wenn Ihr Plug-in Ant-Tasks und -Typen ergänzt, können diese 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 Plug-in-Klassen nicht auf die Tasks und Typen zugreifen können, die dieses Plug-in bietet. (Für weitere Informationen, siehe Warum benötigen Tasks und Typen ein separates JAR? .)
Der Erweiterungspunkt org.eclipse.ant.core.antTasks bietet ein Beispiel dafür, wie eine neue Task in der Datei plugin.xml angegeben wird.
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 Fortschrittüberwachungsobjekt wird durch die Verweise des Ant-Projekts erhalten. 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 { ... } } }
Plug-in-Entwickler sollten die folgenden Angaben als Prüfliste verwenden:
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. Gleichzeitig bieten separate JARs für Tasks und Typen eine wirkungsvolle Isolierung vom Lademechanismus der Plug-in-Klassen. Durch eine Deklarierung dieser zusätzlichen JARs durch ein Plug-in kann das ergänzende Plug-in ebenfalls zum Ant-Klassenpfad hinzugefügt werden.