タスクおよび型の組み込み

プラグインが Ant タスクと型を提供した場合、そのタスクと型は、提供した側のプラグイン内のすべてのクラスへアクセスできます。例えば、org.eclipse.core.resources プラグインから提供された eclipse.refreshLocal タスクは、IResource.refreshLocal() メソッドのラッパーです。

プラグインから提供されたタスクと型は、プラグイン・ライブラリーに入れないでください。これらは、個別の JAR に入れる必要があります。つまり、プラグイン・クラスは、そのプラグインが提供したタスクと型にアクセスできません (詳細については「タスクと型に個別の JAR を使用する理由」を参照してください)。 

org.eclipse.ant.core.antTasks 拡張ポイントは、plugin.xml ファイルに新しいタスクを指定する方法の例を示します。

進行モニター

Eclipse Ant サポートは、AntRunner の起動時に進行モニターが渡される場合に、 IProgressMonitor へのアクセスを提供します。進行モニターへのアクセスが提供される利点の 1 つは、実行時間の長いタスクが、ユーザーがそのキャンセルを要求したかどうかをチェックできる点です。進行モニター・オブジェクトは、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 で実行するための要件は、基本的に 2 つあります。

実行時には、プラグイン・クラス・ローダーはそれらのクラスパスを拡張することはできません。また、プラグインは、それらの依存関係を変更できません。それと同時に、タスクと型に個別の JAR を使用すると、プラグインのクラス・ロード・メカニズムから分離させることができます。プラグインによって宣言されたこれらの追加 JAR があると、提供する側のプラグインを Ant クラスパスへ追加することもできます。