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

プラグインが 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 クラスパスへ追加することもできます。

 

Copyright IBM Corporation and others 2000, 2003.