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 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.

Monitores de Progresso

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 {
		...
	}
}
}

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

 

Copyright IBM Corp. e outros 2000,2002.