Maven?Ant?
「 CraigはDCさくらユーザだった!?」で,AntでMavenちっくなことをStruts 1.2.8のソースパッケージでやってると書いたが,実際にはStrutsをビルドするために必要な依存ライブラリを,AntのGetタスクでダウンロードしているに過ぎない。
例えば,こんな感じ。
usetimestamp=”true” ignoreerrors=”true” src=”http://www.ibiblio.org/maven/…/junit-3.8.1.jar”/>
・・・
上記の場合はbuild.xmlファイルに直書きしちゃってるけど,プロパティファイルをうまく使えば,Mavenのproject.xmlのdependency系の処理は,Getタスクで十分代用できそうだ。
ただし,「maven eclipse」でEclipseのプロジェクトファイル生成&クラスパス設定とかをやってくれたりするので,やっぱりMavenは便利なレベルまで仕上がってるなぁという印象。なので,わざわざAntでMavenちっくなことを頑張るのはどうかなと思い始めた(と,前のエントリと正反対なことを言ってみる)。MevenのGoalを自作できるくらいMavenを使い倒せるようになることが,まずは先かな。ま,所詮中身はAntちっくだけど。
僕は「Maven便利だし楽だし,いざとなればGoal作ればいいじゃん」と思っているんだけど,何故か「ビルド作業,なんでMavenなの?Antに書き換えようよ」と僕に言ってくる人が多い。AntにできてMavenにできないことをやって,ビルド作業の効率や質が格段に上がるなら理解できるんだけど,そういう理由を説明できるわけでもない。よくよく聞くと,どうやら「Maven知らないから」という理由っぽい。
ビルドファイルを書く人は,きっと実装系を統括する人だし,そういう人はAntやMaven,はたまたmakefileやIDEなど,ビルド系に関する広い知識を持って,その上で「このPJはどういうものを使えばいいか」を判断すべきだ。単にその人が「Maven知らないから」という理由で,今までMavenでGoalとか作ってビルド作業が確立されているPJをAntに書き換えようとするなんて,僕には許容できない。まずはMaven勉強せい,その上で「やっぱりMavenはこのPJにあってないよね」という発言をしろ,と言いたい。
Mavenは僕にとってはAntのWrapperっていう認識だ。JFaceとSWTの関係に似ていると思っている。なので,ますます「MavenやめてAntに」が,よくわからない。
今日では,オープン系のプロダクトが無数にあり,どれを選ぶのかは非常に難しい。なので,選ぶ立場の人間は,より多くの選択肢を知った上で,目の前のPJに最適な選択をして欲しい。「PJで最適と思われるのは,AとB。どっちをとっても大丈夫なので,あとは趣味だね」という線引きの度合いが正しくできるようになれば,いい感じなんだろうな。