プラグインのソースコードを別のプラグインとして配布するには

以前からプラグインはビルドするときにソースコードを同梱して配布する事ができましたが、3.4からは別のプラグインとして配布できるようになりました。それが原因ではないと思うんですが、ソースコードをプラグインの中に同梱するとフィーチャーとしてビルドが出来ない障害もあります。今回はいろいろ調べたので、ソースコードを別のプラグインとして同梱するために行った設定のメモ。

プラグインプロジェクトの設定

build.properties


いつの頃からかはわかりませんが、現在のPDEでは、Binary Buildで指定したファイルはSource Buildに指定しなくてもよいようです。重複して指定すると、build.propertiesの編集ページで警告されます。

フィーチャープロジェクトの設定

ソースコードのプラグインをまとめるフィーチャーは自動で生成されます。自動生成される際に、元の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"は、に、id:"junit.extensions.eclipse.quick.feature.source"は、に、属するように指定しています。(sourceの方のIDが、カテゴリの名前と異なるようにしているのには理由はありません。単に間違っ...)

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が必要、というところです。コピーするときに必要なファイルがなんであるのか、書いておく必要があります。

実際に生成してみる。

上記の設定を行った後、フィーチャーを生成するときにこんな感じで設定してください。

うまく設定できると、生成したリポジトリからのインストールは次のような画面になるはずです。