Ant ビルド・ファイルをプログラマチックに実行

Eclipse にビルドされた Ant サポートによって、プラグインは、プログラマチックに Ant ビルド・ファイルを実行できます。 これは、org.eclipse.ant.core プラグインに組み込まれている AntRunner クラスを介して実行されます。

以下のコードの断片は、別のプラグインのコードからの AntRunner の使用方法の例を示しています。

import org.eclipse.ant.core.AntRunner;
import org.eclipse.core.runtime.IProgressMonitor;

...

 public void runBuild() {
	IProgressMonitor monitor = ...
	AntRunner runner = new AntRunner();
	runner.setBuildFileLocation("c:/buildfiles/build.xml");
	runner.setArguments("-Dmessage=Building -verbose");
	runner.run(monitor);
}

進行モニターを使用している場合は、実行中のタスクで使用できます。 詳細については「進行モニター」を参照してください。

Ant ビルドが個別の VM で発生しない場合、ある一定の時間に行うことができる Ant ビルドは 1 つだけです。 AntRunner.isBuildRunning() を参照してください。

ビルドがワークスペースと同じ JRE 内で発生する場合のネイティブ・ライブラリーに対する特殊管理

Eclipse で Ant ビルド・ファイルを実行するたびに、新しいクラス・ローダーが作成されます。 ライブラリーは Java では 1 つのクラス・ローダーからのみロードできるので、ネイティブ・ライブラリーを使用するタスクは、複数のビルド・ファイルの実行時には、問題を生じる可能性があります。 新しいクラス・ローダーがネイティブ・ライブラリーをロードしようとしている時点で、直前のクラス・ローダーがまだガーベッジ・コレクションされていない場合は、問題を示す例外がスローされ、ビルドが失敗に終わります。 この問題を回避する 1 つの方法は、ライブラリーのロードをプラグイン・ライブラリー内のクラスに処理させることです。 タスクは、ネイティブ・メソッドにアクセスするためにそのクラスを利用できます。 この方法では、ライブラリーはプラグイン・クラス・ローダーによってロードされ、ロード・ライブラリーの競合は起きません。