eclipse3.1でプラグインをビルドするには。

eclipseプラグインを開発し始めて、最初にハマるのは、ビルドです。
プラグインプロジェクトだけを作って、
「Launch an Eclipse Application」をしてるだけなら、全然動いているのに、
pluginの.jarファイルを作ってインストールしてみると、
なにやら色々エラーがでてサッパリ動かない…なんて事になります。
僕も、最初は何だか苦労した覚えがあります。
僕の場合は、id:koichikさんが、Diiguのプラグインをちゃんとリリース出来る様にプロジェクトを足したり、plugin.xmlやMANIFEST.MFを調整してくれたりしたので、
Doltengではそれを参考に何とか乗り越えられましたが、ハテサテ…

プロジェクトは3つ。

最初のポイントは、以下に挙げる3つのプロジェクトがある事です。

  • feature
    • Pluginやfragmentを、一つのフィーチャとしてまとまりがある事を定義する。
  • plugin
    • 本体。開発が進めば、fragmentプロジェクトを作ったりすんのも悪くないかも。
      但し、JDTは機能がフラグメントにならず、全部plugin。コアはfragmentでもイイんじゃねぇかとおもうのだけれど…。
  • site
    • 配布サイトを作成する為のプロジェクト。
      Doltengでは、seasar.orgで配布しているプラグイン全部が定義されているリポジトリのsite.xmlに手を入れる前に、こっちで作って動作確認している。ホントはイラナイ子。

FeatureとPluginのバージョン。

まずは、「Plugin Manifest Editor」で、plugin.xmlを開きます。
んで、今までよりも大きい数字に変更するます。


次に、「Feature Manifest Editor」で、feature.xmlを開きます。
feature.xmlで定義したVersionとplugin.xmlで定義したバージョンは、
本来、それぞれ全く別個のモノです。でも、面倒なので同じ値にしています。
まずは、feature.xmlのVersionを、前よりも大きい数字にするます。
んで、下のタブから、「Plug-ins」をクリックします。


ここでは、一つのfeatureとして一まとめにするPluginやらFragmentを設定するます。
まずは、「Add ...」ボタンを押下して、featureに含めたいPluginを選びます。
Doltengの場合、org.sesasar.dolteng.eclipseしかありません。


二度目以降のビルドでは、既にPluginが設定されているけれども、バージョンが古い状態になっている筈なので、
「Versions ...」ボタンを押して、Pluginのバージョンをコピーしてきます。
マレに、plugin.xmlのバージョンを新しくしているのに、
新しいバージョンに変わらない事があるます。
原因は分りませんが、何やらアヤシゲな事になっているのは、間違いありません。
そんな時は、一旦、開いているfeature.xmlやplugin.xmlを閉じた上で、
eclipseを再起動すると、イイ感じに動きます。

Update Siteな感じにビルドする。

次は、「Site Manifest Edtior」で、site.xmlを開きます。
とりあえずは、テキトーなCategoryを追加するます。
んで、そのカテゴリを選んだ状態で、「Add Feature...」ボタンを押します。
出てきたダイアログで、そのサイトから配布したいFeatureを選びます。*1
featureにpluginを追加する時と同じ様に、ここでも、新しいFeatureがでて来ない事があるので、注意。
ハマったら、eclipseを再起動して下さいナ。


よくやる間違いは、plugin.xmlのバージョンは上げたけど、
feature.xmlのバージョンを上げ忘れる事です。
何度やっても新しいバージョンの「feature」は出て来ません……orz。*2


ここまで準備できたら、ビルド出来ます。
追加したばっかりのFeatureを選択状態にすると、*3
「Build」ボタンが押下出来る様になるので、ポチっとな・・・・。
site.xmlが配置されているディレクトリと、同じディレクトリにある2つのディレクト

  • features
  • plugins

に.jarファイルが、バージョン番号付きで作成されたら、ビルド完了です。

最後に。

プラグインを開発しているeclipseに開発している最中のプラグインとは違うバージョンで開発中のプラグインがインストールされていると、色々と不思議な挙動をします。


ビルドが終わったプラグインを、動作検証する為に、インストールするeclipseは、
ディレクトリを分けて別にするのが良いと思います。
僕の場合は、こんな感じになっています。

*1:Pluginに非ず

*2:Featureのバージョンが変わって無いから。

*3:何故数字順に並ばないのかは、謎。恐らくハッシュコード順に並んでると思われ。