Eclipseのプラグイン開発のプラグインアーカイブの解凍方法。
プラグインでは、ファイル(jarファイル等)をプラグインアーカイブに含めることが出来る。
しかし(デフォルトでは)実際にプラグインが配布されて使われる時には そのファイルはアーカイブ内に入っているので、そのまま普通のファイルとして使うことは出来ない。
という訳で、フィーチャーを作る際のオプションでインストール後にアーカイブを解凍させることが出来る。(by ashigeruさん)
インストール後にアーカイブを解凍させる方法。
feature.xmlが以下のように変わる(unpackの指定が無くなる)。
<plugin
id="jp.hishidama.eclipse_plugin.dmdl_editor"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
|
→ |
<plugin
id="jp.hishidama.eclipse_plugin.dmdl_editor"
download-size="0"
install-size="0"
version="0.0.0"/>
|
解凍される場所は、プラグインのインストール先になる。
例:「C:\eclipse\plugins\jp.hishidama.eclipse_plugin.dmdl_editor_1.0.1.201302192127」
で、中を見てみると、プラグインのプログラムのファイルまで解凍されて、classファイル群が作られている^^;
これはちょっと良くないので、classファイルは別途jarファイル化しておいた方が良い。(プラグインの機能でjarファイル化することが出来る)
プラグインのclassファイル群をアーカイブ化する方法。
.」が追加される。(一覧に何も無いときは、「.」が省略されているという扱いらしい).」は要らないので、)「.」を選択して「除去」ボタンを押す。output..」とか「javacSource..」とかのピリオドが2つある指定「..」があるので、「.plugin.jar」に置換する。
output.. = classes/ bin.includes = plugin.xml,\ META-INF/,\ icons/,\ plugin.jar javacSource.. = 1.6 javacTarget.. = 1.6 javacDefaultEncoding.. = UTF-8 source.plugin.jar = src/ |
→ |
output.plugin.jar = classes/ bin.includes = plugin.xml,\ META-INF/,\ icons/,\ plugin.jar javacSource.plugin.jar = 1.6 javacTarget.plugin.jar = 1.6 javacDefaultEncoding.plugin.jar = UTF-8 source.plugin.jar = src/ |
これで、プラグインをビルドすると「plugin.jar」が作られる。
一番最初の状態のbuild.propertiesは以下のようになっている。
source.. = src/ output.. = classes/ bin.includes = plugin.xml,\ META-INF/,\ icons/ javacSource.. = 1.6 javacTarget.. = 1.6 javacDefaultEncoding.. = UTF-8
「source..」という指定は、“カレントディレクトリー「.」のソース”というような意味になっているらしい。
つまり、「プロパティー名.対象」という指定の仕方のようだ。
普通だったら「対象.プロパティー名」という命名になっていて欲しいところだが、対象には「plugin.jar」の様にピリオド入りのファイル名が指定できるので、逆になっているのかもしれない。
したがって、
「source.plugin.jar = src/」は、「plugin.jarを作る為のソースディレクトリーはsrc/である」
「output.plugin.jar = classes/」は、「plugin.jarを作る為の(コンパイルの)出力ディレクトリーはclasses/である」
「javacSource.plugin.jar = 1.6」は、「plugin.jarはjavac 1.6で作成する」
というような意味になるのだろう。
プラグインアーカイブに含まれたファイルは、“バンドルされたリソース”としてアクセスすることが出来る。
プラグインプロジェクト内の「resource/zzz.properties」というファイルを使用する例。
まず、マニフェストエディターの「ビルド」タブの「バイナリー・ビルド」で「resource/zzz.properties」にチェックを付け、アーカイブに含まれるようにしておく。
それからソースをコーディングする。
import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.osgi.framework.Bundle;
Bundle bundle = Activator.getDefault().getBundle();
IPath path = Path.fromPortableString("resource/zzz.properties");
URL bundleUrl = FileLocator.find(bundle, path, null);
URL url = FileLocator.resolve(bundleUrl);