// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

***Eclipse3.1から新構成のプラグインになりました。 [#y7821863]
Eclipseのプラグインですが、3.1からjar化されて配布される形式が導入されました。よく見てみると、プラグイン内の構成も変更されています。例えば
-トラディショナルなプラグインは、プラグイン自身のディレクトリのなかに、クラスをパックしたjarファイルをもつ
-新構成のプラグインは、プラグイン自身がjarファイルとなり、直接その中にクラスファイルをもつ

このように新構成の形式にすることで、プラグインのjarは単純なjarファイルとなり、Eclipse以外の環境でもそのままパスを通して使用できるようになりました。つまりEclipse上ではEclipseプラグインなんだけれども、他の環境、例えばWEBコンテナ上ではWEB-INF/libに置くことのできるjarファイルである、というような構成にすることができるわけです。例えばインタフェースだけを格納した新構成のプラグインjarを作成し、サーバでもクライアントでもそのjarを使ってインタフェースを共通に保つ、なんて芸当ができますね。すばらしい。。

***作り方 [#w0061448]
さて、その新構成のプラグインの作り方ですが基本的に、プラグインプロジェクトを作成するときにターゲットバージョンを3.1にして、OSGiバンドル・マニフェストを作成、を選択することが必要みたいです。基本的にそれでOKなんだけど他にもちょっと条件があるみたい。条件、というか制約があるって言うか。。

忘れないうちにメモしておきます。
-プラグインのエクスポートウィザードなどでエクスポートすると、基本的にjar化した新構成プラグインを作ろうとするんだけど、featureをつくる場合はfeature.xmlでunpackするかどうかを制御できます。例えば、プラグインのなかに設定ファイルなどを置く場合、jarファイル化されるとファイルにアクセスできなくなっちゃうので((ファイルとして存在してくれないと困る))、その場合はfeature.xmlでunpackの指定で明示的に解凍することができます。でもこの場合、ホントにjarを解凍しちゃうので、プラグイン自身のディレクトリを開いてみると*.classファイルが見えちゃうわけです。なんかかっこわるいですね。。。ちなみにunpackの指定方法は
 <plugin id="org.eclipse.core.resources.win32" unpack="false"/>
などと unpack="true|false" で制御できます。指定しない場合はtrueなので、書かないと解凍しちゃうわけですが、feature.xmlを作るとデフォルトでunpack="false"と書いてあります。ややこしい。マニフェストエディタでは「インストール後にプラグイン・アーカイブを解凍します。」というのにチェックを入れないと、unack="false"となります。
-あるプラグインAで、そのプラグインA内に(例えば誰か作った)jarを置いてそこにパスを通すような場合、*.productファイルのエクスポートウィザードなどでプラグインをExportすると、自動的にunpackされるみたいです。すでにjarを内包してるので、デフォルトで解凍してくれるのかな。
-このようにプラグインA内でjarにパスを通した場合、注意しなくてはいけないのが、自分が作ったクラスファイルがデフォルトではプラグイン内に取り込まれない、と言うことです。プラグイン内でjarにパスを通すのって、マニフェストエディタの「ランタイム」タブのクラスパスで行うのですが、そこに
#ref(pic.png)
と言うように「.(ドット)」にパスを通さないといけないみたい。タチが悪いのが、Eclipseのワークベンチ内でテストしてる分にはこの現象は発覚しないんだけど、エクスポートして初めて取り込まれないことがわかるようになっていて、ここで相当悩みました。ていうかバグじゃないこれ??





----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS