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

yohjizzz's Blog

I'm a Programmer.

Ant と Maven と Eclipse、んで Chura …

Maven 1.x(?)に出逢い、Ant との”さよなら”を考え。
Maven 2.0.x と出逢い、Ant との”さよなら”を決意。(たまに使うけど。)
案件やシステムを跨いでも、Web でもそうじゃなくても、Java だったら Eclipse + Maven2※ ってゆー環境を導入するようにしてみた。
多種多様なシステム開発すべて、この環境構成が最適解なわきゃないんだけど、やっぱりできる限り汎用的な環境を使いまわすってのは開発者にとっては良いことだと思うんすよ。
※m2eclipse による org.maven.ide.eclipse.maven2Builder と org.maven.ide.eclipse.maven2Nature のことです。


ちょうどそんな時に「WTP の動的 Web プロジェクト(以下、WTP)」に本格的に触れる。ここで悩む。標準どーしょ?
Eclipse + Maven
Eclipse + Maven + WTP
Eclipse + WTP ?(Maven さよなら?)
なんて感じで。
やっぱりメタ情報やライブラリの管理は Maven でやりたいし、WTP けっこう重いし。WTP はあんまりかなぁって思ってた。
でも WTP だと Eclipse 操作上で デプロイできちゃう。→これはけっこう周りのヒトには評判がいいんだよね。
個人的にはそこはコマンドで一発なんだからさぁ、別にいらなくね?なんて思うわけですが、
なんてったって WebLogic でも OC4J でも、もちろん JBoss でも Tomcat でも お手軽にデバッグモードで起動できちゃったりするわけで。(個人的にはあんまり要らない…)
Tomcat なら Sysdeo のプラグインで充分だけどね。実案件では APサーバー選択できることの方が少ない。(ましてや理由が”これ”だけで選択するなんてありえない。)
Tomcat に限定するなら、後述する Chura の件も含めて、次の記事な感じで問題ないでしょう。検証はしてないけど。方向性は近いと思います。
ベーシスト兼ソフトウェアエンジニアのブログ Eclipse + Maven2 + Tomcat + Seasar2 の開発環境ベスト!?プラクティス


そこで WTPMaven の共存を考えてみた。 ようじのにっき - java 開発、雑多ごと。
ただこーすると記事にも書いたけど、
Subversion チェックアウトして Eclipse にインポートしてね。後はデプロイが終わればもう動いちゃうよっ♪」…とは言えない。
最初に1度だけ、ローカルリポジトリへの参照を Eclipse(Workspace)へ登録する必要がある。
「1度だけならいいじゃん」と言われてしまえば終わりなんだけど、できるんであれば【チェックアウト(インポート)】→【お気軽デプロイ】→【デバッグ起動可】を求めたい。
しかも WTP を使う以上、サーバー起動(デプロイ)時、
 WAR ファイルが作成されてしまうのでコンテンツ(画像など)が多いサイトだと、ここでちょっと時間がかかる。
ちょっとした変更でも時間がかかってしまうのは、やっぱりウザい><
結論としては、
各開発者のマシンスペックとか、サイトのコンテンツ量とか、そこらへんで WTP を使ってもストレスフルにならないようであれば使うってゆーことでもいいのかなと。
 1.Tomcat 以外だったら WTP 使う。WebLogic だと WorkShop とか出てきちゃって WTP 必然みたいな空気漂うしね。
 2.Tomcat だったら Sysdeo で充分だから WTP 使わない。
1でも2でももちろん Maven は利用する。


そして今年から幸運なコトに実案件で Seasar と戯れる機会が増えてきた。
最近では Teeda でたくさんアプリ作ることばっか考えてるわけだけど、そこで Chura に出逢うことになる。
そしてまた悩みが増える。
 ・HotDeploy でサクサク開発したい(Seasar 使うならコレ当然!)。
 ・んで今までどおりのデバッグ起動をみんな求めてる。
前者が必須である以上、現状の WTP によるデプロイ方法では成り立たない。変更反映の為に再起動しちゃうからね。
でも後者の為には AP サーバーのプロセスは Eclipse で管理する。(Sysdeo?WTPデプロイ?あとは?)

#そもそも HotDeploy はリクエストごとにクラスローダが変わる訳で、
Eclipse がAPサーバーのプロセス起動した時とは異なるクラスローダで読み込まれた異なるソースコードデバッグ・ポイントつけても無理じゃねっ!?
#あっまずそこらへん調べないと…

そんなこんなウダウダ悩んでたときに書いたのがこれ↓。
Chura を利用する。Eclipse どーする? - ようじのにっき

そしてせっかく id:cepoc さんに TB いただいたので、、、

Churaは、設計的にはSysdeoに依存してはいません。ただ、各種チュートリアルによって、事実上Sysdeoに依存してしまっている気がします。
せっかくのフルスタックなのに、こんな所でプロプライエタリなプロダクト*2に依存してしまうのは勿体ない…。

ChuraプロジェクトでTomcatを起動させる。 - ペ・ダイチャン日記 (旧:cepoc開発記)

ここでおっしゃられてる通り、Churaプロジェクトそのものが Tomcat(Sysdeo)依存してる訳ではなく、
Chura(の初期状態)はあくまでも、
 a.ソースのコンパイル出力先を src/main/webapp/WEB-INF/classes にする。
 (APサーバーにココを参照させておけばコンテンツを target へのコピーをすることなく反映できる。好きです。こーゆー地味だけど使ってると実感できる優しい感じ。)
 b.ディレクトリ構成は Maven 標準。出力先の target/classes だけを a のように変更してる。
 c.予め pom.xml を用意しておいてる。ここにも a と同期をあわせた設定がなされてる。
そして「おまけ」として(?)というかすぐに動かしてもらえるように Sysdeo 用の設定ファイルを用意しておく。
そーすれば「ユーザーが Sysdeo さえいれておいてくれればすぐに動くぜっ」てゆーことであって、それ以上でもそれ以下でもなのだと思ってます。
仮に WTP に対応する(ここで言う対応とは ChuraプロジェクトWTP版を WTPがインポートしたら動的Webプロジェクトとして認識できることだけ)ってなったら、
それはそれで驚きです。だって「WTP のやり方」でデプロイしたら再起動しちゃうから、HotDeploy 要らないの?って思っちゃいます。僕は。

じゃぁ代替手段は? となると、WTPという話が出て来ます。
  (中略)
しかし。

Chura を使うのであれば WTP(動的Webプロジェクト)はいらないと思うんだけど

http://d.hatena.ne.jp/yohjizzz/20071029/1193601176

このエントリーを見て、多分みんな「WTPを使いたい」んじゃなくて、「Sysdeoを使いたくない」んじゃないかな、と勝手な想像をしてみました。
なんか上手い手は無いんでしょうかーー。

ChuraプロジェクトでTomcatを起動させる。 - ペ・ダイチャン日記 (旧:cepoc開発記)

いままでダラダラ書いてきて(こんな時間になってしまった…)もはや何を言いたかったのかすら忘れかけてしまいましたが、、
WTP を使いたい/使いたくない」とか「Sysdeo を使いたい/使いたくない」というよりも、
 ★Chura でささってな感じでプロジェクト環境を構築したい!
 ★HotDeploy 必須!
 ★お手軽サーバー起動&停止!(Eclipse 操作上でやりたいって方が多い。コマンドたたくなり Maven で実行すりゃいいじゃんよって思ってますけど…)
 ★デバッグ起動したい(…っておっしゃる方が多い。僕は未だにデバッグコード埋め込んでます…)
これらを満たした上で開発環境(ディレクトリ構成、ビルド手順、ライブラリやメタ情報管理)をプロジェクトを跨いで標準化できれば良いと思っています。
だから対象が Tomcat であれば Sysdeo で全然 ok! → ≪MavenEclipse、Chura、Sysdeo、Tomcat
ただし Tomcat 以外の場合、今まで(HotDeploy出現以前)の WTP じゃダメ。
だからこれに変わる方法があるかなぁ〜ってのが悩みどころです。 → ≪MavenEclipse、Chura、???、WebLogic or OC4J or JBoss etc...≫


Dolteng で初期生成されたモジュール(パッケージ、javaソース、dicon、HTML等)を WTP(動的Webプロジェクト)として認識させるコトが目的なら、
Dolteng いじってもいいし、バッチ(だのシェルだの)書いて、
お好みのディレクトリ構成(Maven 標準とか WTP 標準など)で動的Webプロジェクトを生成してしまえばいいだけなんで、たいしたハナシじゃないけどw
僕は Chura の初期状態を、付属されるJarとか消して m2eclipse の Maven プロジェクトとして管理したいからそんなコトは不要。


余談:
 最近、build.xml を書く機会が減っちゃって、たまにいじる機会があると、思い出すのに一苦労…それだけ楽してるってことなんだろうなぁ。
 僕みたいにシゴト始めた時から「Ant、CVS が当たり前じゃないの」ってヒトは幸せなようで不幸なようなw


あぁ…けっきょく何を言いたかったのかを見失ったまま終わってしまった>< もう寝ますzzz