Поддержка 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();
Каждый раз при выполнении файла компоновки Ant в Eclipse создается новый загрузчик классов. Поскольку библиотеку можно загрузить с помощью только одного загрузчика классов Java, выполнение нескольких файлов компоновки может привести к неполадкам задач, применяющих внутренние библиотеки. Если предыдущий загрузчик классов не был удален в процессе сбора мусора до загрузки внутренней библиотеки новым загрузчиком классов, выбрасывается исключение, указывающее на неполадку и компоновка прерывается. Этой ошибки можно избежать, выделив для загрузки библиотек класс из библиотеки модуля. С помощью этого класса задача может получить доступ к внутренним методам. Таким образом, загрузка библиотеки выполняется загрузчиком классов модуля и конфликт, связанный с загрузкой библиотеки, не возникает.