Cuando su conector contribuye con tareas y tipos Ant, estos tienen acceso a todas las clases contenidas en el conector contribuyente. Por ejemplo, la tarea eclipse.refreshLocal con la que ha contribuido el conector org.eclipse.core.resources es una envoltura del método IResource.refreshLocal().
Las tareas y los tipos suministradas por los conectores como contribución no deben colocarse en ninguna de las bibliotecas de conectores. Tienen que estar en un archivo JAR aparte. Esto significa que las clases del conector no tienen acceso a las tareas y a los tipos suministrados por el conector. (En el tema Por qué un archivo JAR aparte para las tareas y los tipos hallará más información).
El punto de extensión org.eclipse.ant.core.antTasks.html proporciona un ejemplo de cómo especificar una tarea nueva en el archivo plugin.xml.
El soporte para Ant de Eclipse proporciona acceso a un supervisor IProgressMonitor si se pasa uno al invocar AntRunner. Una de las ventajas de tener acceso a un supervisor de progreso es que una tarea de larga ejecución puede comprobar si el usuario ha solicitado su cancelación. El objeto supervisor de progreso se obtiene de las referencias del proyecto Ant. Tenga en cuenta que un supervisor solo estará disponible si se llama al método AntRunner.run(IProgressMonitor) con un supervisor de progreso válido. El siguiente fragmento de código muestra cómo obtener un supervisor de progreso a partir del proyecto de la tarea:
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 { ... } } }
La siguiente podría ser una buena lista de comprobación para los desarrolladores de conectores:
Básicamente hay dos requisitos para ejecutar Ant en Eclipse que no se adaptan muy bien al modelo de conector:
Durante el tiempo de ejecución, los cargadores de clases del conector no pueden tener las vías de acceso de clases expandidas y los conectores no pueden cambiar sus dependencias. Al mismo tiempo, el hecho de tener archivos JAR aparte para las tareas y los tipos es una buena manera de aislarlos del mecanismo de carga de clases del conector. Asimismo, que estos archivos JAR adicionales estén declarados por un conector permite añadir el conector contribuyente a la vía de acceso de clases de Ant.