Buildツール

実は、Buildツールには結構うるさい。
Buildツールが整備されていないプロジェクトに関わるととりあえず怒る。
そしてツールを書く。


JavaプロジェクトのBuildツールといえばMavenが有名で前のプロジェクトでは使っていましたが、最近はIvyを使ってたりします。
Mavenは機能豊富だけど細かいコントロールがしづらい、と言われて依存性解決の機能だけにフォーカスしたIvyが登場しました。


両方結構使いこんでみて、実際のところMavenだと細かいことしづらいかというとそういうわけでもないです。
たしかにモジュール数が一つ、二つしかないようなプロジェクトではIvyの方がさっと構築できると思いますが、数十のモジュールを扱うようなプロジェクトではMavenの方がスタートアップにかかる工数は少なく済むと思います。
Ivyは、複数モジュールを統制するようなAntスクリプト書こうとすると、それなりに大変。
Mavenだとpom.xmlをちょこっと書けば、とりあえずBuildできるようにはなる。
細かいことしたければ、Antスクリプトを埋め込むことだってできるし、プラグイン書くとかすればいい。


依存性解決は、さすがにIvyはMavenの後に出ているだけあり賢いです。
とにかくMavenの依存しているモジュールがさらに依存しているモジュールもダウンロードしようとしてしまう仕様がひどい。
exceptionの設定をすれば省くことはできるんだけど、いちいち依存する全てのモジュールに設定していくのは正直骨がおれます。
Ivyならダウンロードするしないを1エントリ書くだけでコントロールできる。
このIvyの機能はMavenにも取り込むべきだけど、最新版とかには入っているのかな。


Mavenは、既にプラグインがたくさんあってレポート作成のプラグインもたくさんあるので、その辺考えると総合的にはMavenを使うべきと言えます。
一回自分のプロジェクト雛形を作ってしまったら、そんなに設定に時間がかかることもありませんし。
私は、次のプロジェクトからは(Javaなら)Mavenに戻すつもり。


いずれにせよ雛形があると結構助かるので、MavenとIvyの雛形をそのうちGithubあたりに上げようと思ってます。