Задачи и типы Ant, предоставляемые модулем, обладают доступом ко всем классам, входящим в состав этого модуля. Например, задача eclipse.refreshLocal, предоставленная модулем org.eclipse.core.resources - это заменитель метода IResource.refreshLocal().
Задачи и типы, предоставляемые модулем, не следует размещать в библиотеках модуля. Они должны входить в состав отдельного файла JAR. Такой подход позволяет запретить классам модуля доступ к задачам и типам, предоставленным этим модулем. (Дополнительная информация приведена в разделе Почему задачи и типы следует размещать в отдельных файлах JAR?).
В качестве примера задания новой задачи в файле plugin.xml можно рассмотреть точку расширения org.eclipse.ant.core.antTasks.
Поддержка Ant в Eclipse обеспечивает доступ к интерфейсу IProgressMonitor, если он передается при вызове AntRunner. Одним из преимуществ доступа к монитору состояния является возможность проверки отмены долго выполняемых заданий пользователем. Объект монитора состояния извлекается из ссылок на проект Ant. Обратите внимание, что монитор доступен только в том случае, если при вызове метода AntRunner.run(IProgressMonitor) указан допустимый монитор состояния. В следующем примере исходного кода показано, каким образом можно получить монитор состояния из проекта задачи:
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 { ... } } }
Приведенную ниже информацию разработчикам модулей рекомендуется применять в качестве справочной таблицы:
Поддержка Ant в Eclipse предусматривает выполнение двух требований, которые не полностью соответствуют концепции модулей:
Загрузчики классов модуля не могут динамически расширять пути к классам. Кроме того, недопустимо динамическое изменение зависимостей модулей. Вместе с этим размещение задачи и типов в отдельных файлах JAR позволяет изолировать их от механизма загрузки классов модуля. Объявление этих дополнительных файлов JAR разрешает добавить предоставляющий модуль в путь к классам Ant.