マルチプロジェクトをやってみる

レガシー現場に1年半ほど潜っていました。で、なんか近々似非アーキテクトの仕事をしなくちゃいけなそうなので、ちょっとずつ感覚を作らないとまずいかなと思ったので、暇な時に日記再開してみる。

まずはビルド周りからはじめてみようかなぁと。

今のプロジェクトはコピペによるクラス数超増大化にも関わらずWARもEARも1個なので、ビルドにもデプロイにも時間がかかりまくってる。CIもなくて、UTも腐っていて、ひどいひどい。。。

なので、サブプロジェクト化するための手立てを知っておかないと的な。これ終わったらJenkinsでCI化もしよう。世間的には超今更的な話題なので、完全自分備忘録にすぎませんが。Mavenかivy(最近はsbtとか言うのも流行ってるの?)かな〜とちょっと考え、Mavenは昔ちょっと試して心が折れた記憶があるのと、以前のプロジェクトで枠組みが構築済みだったとはいえivyに触れていたこともあったのでivyにしてみた。

■サンプルはこのへんにアップしてみている。
https://github.com/minokuba/ivy-multiproject/tree/master/ivy-multiproject

■参考記事はこの辺り。
http://ant.apache.org/ivy/
http://d.hatena.ne.jp/ryoasai/20110101/1293904479
http://www.glamenv-septzen.net/view/1099

■感想
夜中にふとおもいたち、あんまりマニュアルとかみないで適当に、ivyに添付されている「multi-project」を適当にいじる感じでやってみたがそんなに難しくなかった。所詮はantなので。

  1. リポジトリからプロジェクトにJarなどをコピー
  2. リポジトリへJarなどをコピー

というのさえ覚えておけばいいだけだし。「multi-project」のサンプルは、common.xmlをインクルードすることでプロジェクト毎に固有のantを書かなくてもいい場合のサンプルになっていて大変わかりやすい。おすすめ。もうちょっとまとめたら、サンプルをWARにしてみようと思います。

■思うこと
業務アプリ開発で、サブプロジェクト分割ってどんな感じでやってます?という疑問。今までいた業務はどれもレガシーだったので、アプリ規模にかかわらず1EAR=1WARでやっていてアホかと思うわけですが、じゃあサブプロジェクトが乱立してもそれはそれで面倒くさい。依存性解決の問題もあるし、そもそも管理対象が増えるとややこしくなるというのはあるわけで。
あとサブプロジェクトを分けた場合は、サブプロジェクトごとに別WARにしたくなりますが、HttpSessionがWAR毎に作られてしまうというのがまた面倒なわけで。。既存のフレームワークとかをコピペして開発する場合(なんかそうなりそうな気配)、それやって大丈夫なのかとか調査できるのかどうかとか心配なわけで。。