Mavenについて語ってみる

最近CI用ツールとして、Jenkins、Mavenを使っている。
Mavenを使うと何が嬉しいのだっけ?というあたりをちょっと攻めて見る。

  • POMを書くだけで動く > Antより記述量が少ない
  • 色々なライブラリをCentralリポジトリから落としてこれる > Antはライブラリが少ない
  • いざとなったらMavenプラグインを作ればいい > Antより柔軟性がない。とは言わせない


うーん。いきなりAntと比較してもイマイチか。


ちょっとCIとJenkinsについて語ってみる。
CIを実現するには、継続的に・インテグレーションすることが大事なのだけれど、
Jenkinsは「継続的に」に重点をおいていて、
「インテグレーション」をするためには、
Ant、Maven、Shell Scriptなどの力を借りる必要がある。


「インテグレーション」の一手法がMavenということ。


「インテグレーション」ってなんぞや?

  • ソースをコンパイルして、テパッケージ化して、ストして、配備する。ビルドって呼んだ方が馴染みやすいか。
  • コンパイル:ライブラリの依存関係を解決し、実行可能ファイルを作る
  • パッケージ化:実行可能ファイルを配備可能なファイルにする
  • テストする:パッケージ化したファイルを動作させる
  • 配備する:Webアプリケーションだと、いわゆるデプロイ


Maven(POM)のよさ:

  • 依存関係が可視化され、ムダを発見しやすい
  • 少ない記述量でやりたいことを実現できる


Mavenの悪さ:
たいてい良さの裏返しになるようなことが多い。