Программный запуск файлов компоновки Ant

Поддержка Ant, встроенная в Eclipse, позволяет модулям программно запускать файлы компоновки Ant. Для этого применяется класс AntRunner, входящий в состав модуля org.eclipse.ant.core.

В следующем примере исходного кода показано, каким образом AntRunner можно вызвать из кода другого модуля:

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);
}

Если применяется монитор состояния, доступ к нему предоставляется всем текущим задачам. Дополнительная информация приведена в разделе Мониторы состояния.

Обратите внимание, что в пределах одной виртуальной машины одновременно может выполняться только одна компоновка Ant. См. раздел AntRunner.isBuildRunning();

Если для компоновки и рабочей области применяется одна и та же среда выполнения Java, отдельное внимание следует уделить внутренним библиотекам

Каждый раз при выполнении файла компоновки Ant в Eclipse создается новый загрузчик классов. Поскольку библиотеку можно загрузить с помощью только одного загрузчика классов Java, выполнение нескольких файлов компоновки может привести к неполадкам задач, применяющих внутренние библиотеки. Если предыдущий загрузчик классов не был удален в процессе сбора мусора до загрузки внутренней библиотеки новым загрузчиком классов, выбрасывается исключение, указывающее на неполадку и компоновка прерывается. Этой ошибки можно избежать, выделив для загрузки библиотек класс из библиотеки модуля. С помощью этого класса задача может получить доступ к внутренним методам. Таким образом, загрузка библиотеки выполняется загрузчиком классов модуля и конфликт, связанный с загрузкой библиотеки, не возникает.