Добавление задач и типов

Задачи и типы 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 {
		...
	}
}
}

Важные правила, связанные с добавлением задач и типов

Приведенную ниже информацию разработчикам модулей рекомендуется применять в качестве справочной таблицы:

Почему задачи и типы следует размещать в отдельных файлах JAR?

Поддержка Ant в Eclipse предусматривает выполнение двух требований, которые не полностью соответствуют концепции модулей:

Загрузчики классов модуля не могут динамически расширять пути к классам. Кроме того, недопустимо динамическое изменение зависимостей модулей. Вместе с этим размещение задачи и типов в отдельных файлах JAR позволяет изолировать их от механизма загрузки классов модуля. Объявление этих дополнительных файлов JAR разрешает добавить предоставляющий модуль в путь к классам Ant.