ふたつの川うるおう日記
2007-11-17 (Sat)
_ [Java][Seasar] DevLoader改変、Mayaa対応編
昨日のDevLoader改変により、最近のSeasarを使ったプロジェクトに対応したものの、今日いざ自分のMayaaを使ったプロジェクトのjarファイルをMavenで管理させたら見事に上手く動きませんでした。
というわけでMayaaに対応しました。既に昨日のdevloader-3.2.1ex.jarを使ってみちゃっている方はもう一度同じファイル名のファイルを下記より落とし直してください。
今回の改変版を使わなくてもデプロイ自体は一見上手くいきます。でも、ページレンダリング時にMayaa以外のTaglib(StrutsとかJSTL)のタグがあると、デプロイ時のMayaaのTLD検索でMavenで管理したjarファイルが見えていないためエラーになります。
なのでTLDファイルだけをjarファイルから抜き出してWEB-INF/以下とかに配置しても解決するんですが、それもちょっと面倒だったり、使ってるjarとTLDでバージョンの差異が出たりすると面倒なので、Mavenで管理しているjarファイル内のTLDファイルを使えるようにしました。
解決方法にはシステムプロパティを使いました。どうやって対応しようか悩みながらMayaaのTLD検索してるクラスを見てたら、org.seasar.mayaa.impl.builder.library.scanner.ResourceScannerがjava.class.pathというシステムプロパティに書かれているjarファイルを参照していたので、これにDevLoaderで追加されるMavenリポジトリにあるjarファイルのパスを追加しています。また、複数プロジェクトがある時でもそのプロジェクトで使われているjarファイルだけを追加しているので衝突しておかしくなることもないです。
java.class.pathというグローバルなプロパティを使うのはちょっと抵抗があるかもしれないけど、DevLoaderは開発時だけなので問題ないと思います。
- [関連]: [mayaa-user:270] eclipse+DevLoaderの開発環境でtldが読み込めない。
- 今回の改変版DevLoader使えばこの問題が解決します。
- [追記]: DevLoader改変、JDK1.4で再コンパイルに続く
- 再コンパイルしてアップロードし直しただけ。


