サンプルプロジェクトの作成でNetBeansに登録しているソースやJavadocがうまく反映されないと思っていたら結構意外な落とし穴に気がついたので忘れないように書いておく。
はまるポイントは4つ。
1つ目
プロジェクトテンプレートの新規ウィザードを実行した時点の状態が保存される。
当たり前のように見えるが、テンプレートの元となったプロジェクトを修正、再コンパイルやプラグインのプロジェクトを再コンパイルしても一切反映はされない。EJBとか他のプロジェクトに依存するプロジェクトは適切に処理してくれたのに対してこれはそういったことがない。あくまでもスナップショット。
普段NetBeansの親切さに慣れていればいるほどはまる。
2つ目
ライブラリフォルダを使用しているとコピーされるのはクラスファイルとJavaDocのみ。ソースファイルはコピーされない。
これもはまる。ソースを出す方法はない。まぁJavaDocが登録されている分ましだけど・・・。ライブラリフォルダはNetBeans 6.0での新機能だが、やっつけすぎる・・・。
3つ目
ライブラリフォルダを利用していると、あくまでもライブラリもコピーされた状態のまま取り込むことになる。したがってファイルサイズが飛躍的に伸びる。
たとえばT2Frameworkの現時点でのプラグインではT2Frameworkのライブラリを以下の3つ抱えている。
こりゃサイズが大きくなるはずだ。さらにSpringFramework + iBatisやSeasar2 + S2DAOサンプル等もいれるとどんどんでかくなる。
これをライブラリフォルダを使わないでNetBeansに登録されたものを使うようにするとプラグインに登録されるものは1つとなり、現時点でT2本体のライブラリだけは1/3のサイズになる。5Mもあるので15MBが5MBへと大幅に小さくなる。
CubbyのプラグインもCubby本体は非常に小さいが、Seasar2など依存するライブラリも共有化されるために大幅に小さくなりそうだ。
ライブラリフォルダを使わないとNetBeansに登録するライブラリのバージョンをかえると自動でかわってくれる。これは利点でもあり、不利な点でもあると思う。バージョンを固定化させたいのならライブラリフォルダを意識して作成すればいいだけだから、サンプルプロジェクトではテンプレートの更新がたるいためバージョンアップに追従させたほうが楽か。
4つ目
ライブラリフォルダを利用すると一部プロジェクトでプロジェクトテンプレートが作れない。
Webアプリは大丈夫な模様。スタンドアロンなアプリやライブラリはだめ。JavaSE関係がだめなのかな?すべて試したわけではないが、ライブラリフォルダが使える環境のほうが少ないのかもしれない。たまたまWebプロジェクトでばかりテストしていたからうまくいっていたというか。
以上、わかってしまえばたいしたことがないことだが、原因を知らないとはまるかも。ソースファイルがライブラリフォルダを使うと使われないというのはバグ報告であがってるのかな?
サンプルプロジェクトを位置から作り直すこと、そしてそれにあわせてプラグインプロジェクトでプロジェクトテンプレートを位置から作り直すことが必要になるので結構面倒かも。今週末中にはT2Framework、Cubbyともに0.2を同時リリースしたいところだが、厳しいか?