« プロジェクト・ネーチャーの解除方法 | トップページ | ビルダーの登録方法 »

2004.03.21

新規ビルダーの定義

Eclipseを使っている人のほとんどが,Javaプログラムの開発のためにEclipseを使用している。Eclipse JDTでは,コンパイルという作業は完全にEclipseの裏方作業であり,Eclipse使用者が明示的にコンパイル作業を行う必要がない。ソースコードを変更するとすぐに裏でコンパイルが実装され,エラーがあれば自動的にエディタ上にマーカーが表示される。

ソースコードをコンパイルしてクラスファイルを生成するように,あるリソースを元にして新規のリソースを作成する機能のことをビルダーと呼ぶ。ビルダーはプラグインにより定義され,プロジェクトに対して割り当てられる。例えば,JavaプロジェクトはJDTプラグインに定義されているJavaビルダーが割り当てられている。Javaビルダーは,変更されたソースファイルに対してコンパイルを行い,その結果をエディタに対してマーカーにより反映する処理を行っている。

では,新規にビルダーを定義する方法を紹介する。ビルダーはorg.eclipse.core.resources.builders拡張ポイントを使用してプラグイン・マニフェストに定義される

  <extension
      point="org.eclipse.core.resources.builders"
      id="myBuilder"
      name="My builder">
    <builder>
      <run class="yoichiro.MyBuilder"/>
    </builder/>
  </extension>

id属性はビルダーに付与するIDを,name属性はビルダーの名前を記述する。上記のプラグイン・マニフェストがyoichiro.myPluginというIDのプラグインに定義されていれば,このビルダーはyoichiro.myPlugin.myBuilderというIDになる。ビルダーの実体は,builder要素の子要素としてrun要素を定義し,そのclass属性の値として実装クラスを指定する。

ビルダーの処理を記述するクラスは,IncrementalProjectBuilder抽象クラスの実装クラスとして作成する

  public class MyBuilder extends IncrementalProjectBuilder {
    public MyBuilder() {
      super();
    }
    protected IProject[] build(int kind, Map args, IProgressMonitor monitor)
        throws CoreException {
      IProject target = getProject();
      // targetに対するビルド処理
    }
  }

ビルド作業は,buildメソッドに記述する。ビルダーのオブジェクトはJavaのリフレクションによりインスタンスが生成されるので,引数なしのコンストラクタが必要となる(やることがなければ上記のように再定義する必要はない)。

このビルダーはEclipseプラットフォームにより自動的に利用される。この際,Eclipseプラットフォームはビルド対象のプロジェクトをビルダーにセットする。buildメソッドの中では,getProjectメソッドによりビルド対象のプロジェクトオブジェクトを取得し,プロジェクトが持つリソースに対してビルド処理を行えばよい。

|

« プロジェクト・ネーチャーの解除方法 | トップページ | ビルダーの登録方法 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/333310

この記事へのトラックバック一覧です: 新規ビルダーの定義:

« プロジェクト・ネーチャーの解除方法 | トップページ | ビルダーの登録方法 »