Contribuir com tarefas e tipos

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.

Supervisores de Avanço

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

Regras importantes ao contribuir com tarefas e tipos

As regras seguintes devem servir de lista de verificação para programadores de plug-ins:

Porquê um ficheiro JAR separado para tarefas e tipos?

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.