Executando Arquivos de Construção Ant Programaticamente

O suporte Ant incorporado ao Eclipse permite que os plug-ins executem de modo programático os arquivos de construção Ant. Isso é feito por meio da classe AntRunner incluída no plug-in org.eclipse.ant.core.

O seguinte fragmento de código mostra um exemplo de como utilizar oAntRunner a partir do código de outro plug-in:

import org.eclipse.ant.core.AntRunner;
import org.eclipse.core.runtime.IProgressMonitor;

...

public void runBuild() {
	IProgressMonitor monitor = ...
	AntRunner runner = new AntRunner();
	runner.setBuildFileLocation("c:/buildfiles/build.xml");
	runner.setArguments("-Dmessage=Building -verbose");
	runner.run(monitor);
}

Se um monitor de progresso for utilizado, ele será disponibilizado para as tarefas em execução. Consulte Monitores de Progresso para obter mais detalhes.

Observe que somente uma construção Ant pode ocorrer em um determinado momento se as construções não ocorrerem em VMs separados. Consulte AntRunner.isBuildRunning();

Cuidado Especial para as Bibliotecas Nativas se a Construção Ocorrer no Mesmo JRE do Espaço de Trabalho

Sempre que um arquivo de construção Ant é executado no Eclipse, um novo classloader é criado. Já que uma biblioteca pode ser carregada somente por um classloader em Java, as tarefas utilizando bibliotecas nativas podem encontrar problemas durante a execução de vários arquivos de construção. Se o carregador de classe anterior não tiver sido coletado como lixo na hora em que o novo carregador de classe tentar carregar a biblioteca original, será emitida uma exceção indicando o problema e a construção falhará. Uma forma de evitar esse problema é permitir que o carregamento da biblioteca seja tratado por uma classe dentro de uma biblioteca de plug-in. A tarefa pode utilizar essa classe para acessar os métodos originais. Dessa maneira, a biblioteca será carregada pelo carregador de classe do plug-in e não entrará em conflito com o carregamento da biblioteca.