プラグインのソースコードを別のプラグインとして配布するには
以前からプラグインはビルドするときにソースコードを同梱して配布する事ができましたが、3.4からは別のプラグインとして配布できるようになりました。それが原因ではないと思うんですが、ソースコードをプラグインの中に同梱するとフィーチャーとしてビルドが出来ない障害もあります。今回はいろいろ調べたので、ソースコードを別のプラグインとして同梱するために行った設定のメモ。
プラグインプロジェクトの設定
フィーチャープロジェクトの設定
ソースコードのプラグインをまとめるフィーチャーは自動で生成されます。自動生成される際に、元のfeatureのファイルがコピーされるため、プラグインを提供するリポジトリにIDの異なる同じ名前のフィーチャーが複数登録されます。ソースコードを同梱したフィーチャーは、IDの最後にsourceが追加されるため、識別は可能です。リポジトリを生成するときのcategory.xmlに下記のように指定すれば、ソースコード提供フィーチャーと、実際の機能を提供するフィーチャーと別々のカテゴリにする事ができます。
<?xml version="1.0" encoding="UTF-8"?> <site> <feature url="features/junit.extensions.eclipse.quick.feature_0.6.0.qualifier.jar" id="junit.extensions.eclipse.quick.feature" version="0.6.0.qualifier"> <category name="junit.extensions.eclipse.quick.feature"/> </feature> <feature url="features/junit.extensions.eclipse.quick.feature.source_0.6.0.qualifier.jar" id="junit.extensions.eclipse.quick.feature.source" version="0.6.0.qualifier"> <category name="junit.extensions.eclipse.quick.source.feature"/> </feature> <category-def name="junit.extensions.eclipse.quick.feature" label="Quick JUnit Main"/> <category-def name="junit.extensions.eclipse.quick.source.feature" label="Quick JUnit Source Feature"/> </site>
id:"junit.extensions.eclipse.quick.feature"は、
feature.xml
feature.xmlには、フィーチャー名や提供元などの情報が記述されています。このファイルは国際化のため、文字列を外部化することができます。ベース名はfeature.propertiesです。今回は文字列を外部化させるだけにとどめたいと思います。
feature.properties
feature.xmlから外部化した文字列を参照するには
%featureName
と指定します。feature.propertiesで
featureName=JAMCircle Extension Plugin
となっていれば、%featureNameが、JAMCircle Extension Pluginで置き換わります。
sourceTemplateFeatureディレクトリ
フィーチャーのプロジェクトの直下にこのディレクトリが存在すると、ソースコードのプラグインを生成するように指定したときに、このディレクトリの中身をテンプレートとして上書きします。なので、このフォルダの下に、feature.propertiesを用意し、featureNameにソースコードを同梱したフィーチャーである事を明示した名前にしておけば、識別できる名前にできる、と言う訳です。
sourceTemplateFeature/build.propertiesとfeature.properties
ただ、忘れてはならないのが、このテンプレート置き場のフォルダにもbuild.propertiesが必要、というところです。コピーするときに必要なファイルがなんであるのか、書いておく必要があります。
実際に生成してみる。
上記の設定を行った後、フィーチャーを生成するときにこんな感じで設定してください。
うまく設定できると、生成したリポジトリからのインストールは次のような画面になるはずです。