Contribuindo com tarefas e tipos

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 aos 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.antTasks fornece um exemplo de como especificar uma nova tarefa no arquivo plugin.xml.

Monitores de Progresso

O suporte Ant do Eclipse Ant fornece acesso a um IProgressMonitor se algum for transmitido ao chamar o 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 do monitor de progresso é obtido das referências do projeto Ant.  Observe que um monitor é disponibilizado apenas se o método AntRunner.run(IProgressMonitor) foi chamado com um monitor de progresso válido. O trecho de código a seguir mostra como obter um monitor de progresso do 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 {
		...
	}
}
}

Regras Importantes ao Contribuir com Tarefas e Tipos

Os seguintes itens deverão funcionar como uma lista de verificação para desenvolvedores de plug-in:

Por que um JAR Separado para Tarefas e Tipos?

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 permite também adicionar o plug-in de contribuição ao classpath do Ant.

 

Copyright IBM Corporation e outros 2000, 2003.