プラグインが 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 { ... } } }
以下は、プラグイン開発者用のチェックリストとして活用できます。
プラグイン・モデルにあまり適合しない Ant を Eclipse で実行するための要件は、基本的に 2 つあります。
実行時には、プラグイン・クラス・ローダーはそれらのクラスパスを拡張することはできません。 また、プラグインは、それらの依存関係を変更できません。 それと同時に、タスクと型に個別の JAR を使用すると、プラグインのクラス・ロード・メカニズムから分離させることができます。 プラグインによって宣言されたこれらの追加 JAR があると、提供する側のプラグインを Ant クラスパスへ追加することもできます。