Quando seu plug-in contribui com tarefas e tipos Ant, as tarefas e os tipos possuem acesso a todas as classes dentro do plug-in de contribuição. Por exemplo, a tarefa eclipse.refreshLocal com a qual o plug-in org.eclipse.core.resources contribui é um wrapper para o método IResource.refreshLocal().
As tarefas e os tipos com os quais os plug-ins contribuem não devem ser colocados em nenhuma das bibliotecas de plug-ins. Eles devem ficar em um JAR separado. Isso significa que as classes de plug-in não possuem acesso às tarefas e tipos fornecidos pelo plug-in. (Consulte Por que um JAR separado para tarefas e tipos? para obter mais informações.)
O ponto de extensão org.eclipse.ant.core.antTask fornece um exemplo de como especificar uma nova tarefa no arquivo plugin.xml.
O suporte Ant do Eclipse fornecerá acesso a um IProgressMonitor caso um seja aprovado durante a chamada de AntRunner. Uma das vantagens de se ter acesso a um monitor de progresso é que uma tarefa de longa execução pode verificar se o usuário solicitou cancelamento. O objeto monitor de progresso é obtido nas referências do projeto Ant. Observe que um monitor será disponibilizado apenas se o método AntRunner.run(IProgressMonitor) tiver sido chamado com um monitor de progresso válido. O trecho de código a seguir mostra como obter um monitor de progresso no projeto 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 { ... } } }
Os seguintes itens deverão funcionar como uma lista de verificação para desenvolvedores de plug-in:
Basicamente, há dois requisitos para a execução de Ant no Eclipse que não se adaptam muito bem ao gabarito do plug-in:
Durante o tempo de execução, os carregadores de classe do plug-in não podem ter seus classpaths expandidos e os plug-ins não podem alterar suas dependências. Ao mesmo tempo, ter JARs separados para as tarefas e os tipos é um bom isolamento do mecanismo de carregamento de classe do plug-in; ter esses JARs extras declarados por um plug-in também permite a inclusão do plug-in de contribuição no classpath de Ant.