Quando o plug-in contribui com tarefas e tipos Ant, estes têm acesso a todas as classes dentro do plug-in que contribui. Por exemplo, a tarefa eclipse.refreshLocal que foi contributo do plug-in org.eclipse.core.resources é um wrapper para o método IResource.refreshLocal().
Tarefas e tipos contributos de plug-ins não devem ser colocados em nenhuma das bibliotecas de plug-ins. Devem estar num ficheiro JAR separado. Significa isto que as classes de plug-in não têm acesso a tarefas e tipos facultados pelo plug-in. (Consulte Porquê um ficheiro JAR separado para tarefas e tipos? para mais informações.)
O ponto de extensão org.eclipse.ant.core.antTasks constitui um exemplo de como especificar nova tarefa no ficheiro plugin.xml.
O suporte Ant de Eclipse proporciona acesso a um IProgressMonitor se for transmitido um ao invocar o AntRunner. Uma das vantagens de ter acesso a um supervisor de progresso é que uma tarefa de longo curso pode verificar se o utilizador solicitou o seu cancelamento. O objecto supervisor de progresso obtém-se junto das referências de projecto Ant. Repare que um supervisor só é disponibilizado se o método AntRunner.run(IProgressMonitor) tiver sido chamado com um supervisor de progresso válido. A porção de código seguinte mostra como obter um supervisor de progresso junto do projecto da tarefa:
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 { ... } } }
As regras seguintes devem servir de lista de verificação para programadores de plug-ins:
Existem dois requisitos básicos para executar Ant em Eclipse que não se adaptam ao modelo de plug-in da melhor maneira:
Durante a execução, os carregadores de classes de plug-ins não podem ter os respectivos caminhos de classes estendidos e os plug-ins não podem alterar as suas dependências. Em simultâneo, dispor de ficheiros JAR separados para tarefas e tipos é um bom isolamento do mecanismo de carregamento de classes de plug-ins. Ao ter estes JARs adicionais declarados por um plug-in pode adicionar-se o plug-in que contribui ao caminho de classes Ant também.