Maven2とWTP
どうにも仲が悪い。
WEBアプリのスケルトンを作って、
mvn eclipse:eclipse -Dwtpversion=1.0
ってやるとWTPのプロジェクトとしてインポート出来る、とそこここにあるのでやってみたけど、普通のプロジェクトにしかならない。
こいつぁ遺憾ってんで、ものはためしで、動的Webプロジェクトの新規作成で、既にMaven2で作ったプロジェクトフォルダを指定してやった。
そしたらちゃんと動的プロジェクトとしてインポート出来た。ソースフォルダも出力先もMaven2の設定になってる。「サーバで実行」でサンプルのjspが表示されたど。
で、色々とdependancyを設定したりやりまして、web.xmlもS2対応にしまして、いざ「サーバで実行」してみたら。
Mavenのローカルリポジトリがクラスパスになっとらんので、S2サーブレットが見つからんとかゆわれてダメ。
Mavenサイトに行くと、これはWTP1.0のバグで、WEB-INF/libの中のjarしかクラスパスにならんとかで、これは1.0.1以降で直ってるそうな。
で、最新の1.0.2にしましたよ。
Eclipse再起動したら、あれま、普通のプロジェクトになっちゃってサーバにデプロイできんって。
しょうがないので一旦プロジェクトを削除して、また動的Webプロジェクトの新規作成でそのプロジェクトフォルダを指定したら。
既に存在プロジェクトは指定出来ませんってゆわれました。がーへんな所が律儀になってる!
普通にインポートしても勿論動的Webプロジェクトにはならず。
困ったね。
Sysdeo DevLoaderふたたび
結局Sysdeo Tomcat プラグイン + Maven2でやる事に。そのまんまだと当然MavenのローカルリポジトリやMaven標準ビルド先(target/classesとか)にはTomcatのクラスパスが通りませんので、開発用クラスローダを使います。JSFと仲が悪い奴(http://d.hatena.ne.jp/rokugen/20050617)。
- Tomcatプラグインに同梱されているDevLoaderをTOMCAT_HOME/server/classesに解凍。
- プロジェクトのプロパティで「Tomcat」を選択、開発用クラスローダを有効にして、リストにあるパスを全部通す。これでtarget/classesとtarget/test-classesとMavenローカルリポジトリにクラスパスが通ります。
- 「全般」タブの、「Webアプリケーションのルートとするサブディレクトリ」を、Maven2標準の「/src/main/webapp」にする。
EclipseからTomcatを起動、無事通りました。Mayaaを使ったテストページも表示できたど。やったー。
今回はS2Strutsを使うので、S2JSFの時みたいなトラブルは無いと思う、んじゃないかなあ〜、まあ覚悟はしておけって所か・・・。
.#webclasspathは相変わらず意味不明
前回DevLoader使った時、ネックだなあと思ったのは、開発用クラスローダのクラスパスが書いてある「.#webclasspath」の中身がフルパス表記で、他の人とファイル共有出来ない事でした(http://d.hatena.ne.jp/rokugen/20050615)。MAVEN_REPOなんて環境変数、Tomcatは知りませんから、しょうがないですよねーって思ったら。
でも結局これ、実行には必要なかったりした。何時生成されてんだかよくわかんないんだよなあ。
今回、EclipseにMaven2用プラグイン入れたんですが
<webClassPathEntries> <webClassPathEntry>/WebTest/target/classes</webClassPathEntry> <webClassPathEntry>/WebTest/target/test-classes</webClassPathEntry> <webClassPathEntry>org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER</webClassPathEntry> </webClassPathEntries>
プラグイン入れると、M2_REPO設定しなくていいから、新人さんにセットアップさせるのは楽ちんよね。Maven2とプラグインだけインストールして貰えばいいし。
で、今回はためしに.#webclasspathを削除してみる。
Tomcat起動。
見事に動きました。ローカルリポジトリにクラスパスが通ってます。ほんげー。
いったいなんだったんだ、.#webclasspath?外にも出ない毎日(古いよ)。
と云う事で、チーム開発も無問題だ、やったぜ。取り敢えずさよならWTP!