Quando il plug-in aggiunge attività e tipi Ant, tali elementi hanno hanno accesso a tutte le classi all'interno del plug-in in questione. Ad esempio, l'attività eclipse.refreshLocal aggiunta dal plug-in org.eclipse.core.resources funge da wrapper per il metodo IResource.refreshLocal().
Le attività e i tipi aggiunti dai plug-in non devono essere posizionate in nessuna delle librerie di plug-in. Devono risiedere in un file JAR separato. Questo significa che le classi di plug-in non hanno accesso alle attività e ai tipi forniti dal plug-in (per ulteriori informazioni, vedere Perché si deve utilizzare un JAR separato per le attività e i tipi? ).
Il punto di estensione org.eclipse.ant.core.antTask fornisce un esempio di come specificare una nuova attività nel file plugin.xml.
Il supporto Ant Eclipse fornisce accesso a un IProgressMonitor se ne viene passato uno quando si richiama AntRunner. Uno dei vantaggi dell'accesso a un controllo di avanzamento consiste nel fatto che per un'attività di lunga durata è possibile verificare se l'utente ne ha richiesto la cancellazione. L'oggetto di controllo di avanzamento è ottenuto dalle preferenze del progetto Ant. Si noti che un controllo è reso disponibile solo se il metodo AntRunner.run(IProgressMonitor) è stato richiamato con un controllo di avanzamento valido. Il seguente frammento di codice mostra come ottenere un controllo di avanzamento dal progetto dell'attività.
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 { ... } } }
Di seguito è riportato un elenco di controllo per gli sviluppatori di plug-in:
Esistono due requisiti per l'esecuzione di Ant in Eclipse che non si adattano molto bene al modello di plug-in:
Durante il run-time i caricatori di classi di plug-in non possono espandere i percorsi classi e i plug-in non possono modificare le proprie dipendenze. Allo stesso tempo, disporre di JAR separati per le attività e i tipi è un buon modo per isolarsi dal meccanismo di caricamento di classi di plug-in e il fatto che il plug-in abbia dichiarato questi ulteriori JAR consente di inserire il plug-in di aggiunta nel percorso classi Ant.