読者です 読者をやめる 読者になる 読者になる

Buckminsterを試してみる(1)

BuckminsterとはEclipse Plug-inのビルドやテストを補助するEclipse Plug-inです。Eclipse Demo Camp Tokyoで、「こんなネタで話したかったんだ」とつぶやいたネタの一つがBuckminsterでした。それで興味を持ってくださった方がいらっしゃったのと、PluginBuilderのHelios版がリリースされる様子がないので、この機会に試してみました。ここで公開されているチュートリアルを試しました。このチュートリアルを訳しつつ、メモをとりました。

準備
  • まっさらなEclipse RCP/RAPパッケージを用意*1

やったこと

RCPのサンプルとしてよく使われる、Mailテンプレートプロジェクトを作成する。
  • プラグインプロジェクト(com.example.mail)を作成
  • RCPの作成を選択
  • Nextを選ぶとテンプレートプロジェクトが表示される。Mailテンプレートを選択
配布用フィーチャーを作る(com.example.mail.feature)
  • フィーチャープロジェクト(com.example.mail.feature)を作る
  • Plug-insにcom.example.mailを追加
  • include featuresにcom.eclipse.rcp*2を追加
RCPとしてビルドできる事を確認する。
  • com.example.mail.featureにproductファイル*3を追加する。
  • 下記の写真みたいに情報を追加する。

  • "The product configuration is based"にfeatureを選択し、Dependencyタブでcom.example.mail.featureを選ぶ
  • 試しにプロダクトが起動するか確認する。OverviewタブのLaunch an Eclipse Applicationを選択する。*4
Buckminsterをインストールする。
Buckminster用のフィーチャープロジェクト(com.example.mail.site)を作成

target platform*5の定義と共有をします。

  • Preference画面を開き、 Plug-in Development > Target Platformを選ぶ。
  • 空の定義を作成し、Eclipse Software SiteからEclipse RCP SDKEclipse Platform Launchersを追加する。
  • Include required softwareのチェックは外し、Include all environmentsにチェックを入れる。
  • 現在のターゲットプラットフォームに指定する
Buckminsterを使ってp2リポジトリを作成する

Buckminsterを使ってp2リポジトリを作るのは簡単です。

  • com.example.mail.siteを選択し、コンテキストメニューを表示し、Buckminster > Invoke Action を選択すると次のダイアログが表示される。

  • しばらく待つと、site.p2が表示される。site.p2を選択すると、同じワークスペースにBuckminster.outputというフォルダが出来る。それがp2のリポジトリ
  • 今度はp2リポジトリの出力先等、カスタマイズ。まず下記のプロパティファイルを作る。
# 出力先
buckminster.output.root=${user.home}/tmp/mail
# 一時ファイルの出力先
buckminster.temp.root=${user.home}/tmp/buildtmp
# .qualifier の置換方法(リビジョンで置き換える)
qualifier.replacement.*=generator:lastRevision

target.os=*
target.ws=*
target.arch=*
  • 先ほどのダイアログではpropertiesファイルの指定欄があったが、そこに作成したbuckminster.propertiesを指定。

これで出力先のカスタマイズ等できます。.qualifierの指定方法は他にもgenerator:lastModifiedや generator:buildTimestamp があります。一般的にeclipse上からエクスポートされると置換されるのは、buildTimestamp形式です。先ほどのbuckminster.propertiesはこんな感じで指定します。

qualifier.replacement.*=generator:buildTimestamp
generator.buildTimestamp.format=yyyyMMddHHmm

これで自動ビルドの下準備が整いました。続いてHudson...と行きたいところですが、ちょうど区切りがいいので次回。ちなみに紹介したチュートリアルのサイトではHudsonの自動化までやられており、実際にやってみたのですが、拍子抜けするくらい簡単でした。ただ、作業は簡単ですが、実際はp2のインストールに時間がかかる事があるので、なんか止まってるっぽいと思って終了しないように。ハマったのは、フィーチャーIDの指定が間違っていた、ということくらいです。

*1:他のプラグインによる干渉を防ぐため。何か変な動作があったとき、その原因を探る時間がもったいないでしょう。

*2:RCP用のベース機能を用意しているフィーチャー

*3:RCPとしてパッケージするための情報を格納したファイル

*4:Macの場合、64bit Java VMを利用しているのであれば、VM引数に-d32が含まれていないと起動しない。

*5:target platformとは開発中のプラグインを載せるためのプラットフォームの定義です。