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の悪さ:
たいてい良さの裏返しになるようなことが多い。