Javaによるソフトウエア開発でよく使われるオープンソースのビルドツールには、米Apache Software Foundationが開発する「Apache Ant」(http://ant.apache.org/)や「Apache Maven」(http://maven.apache.org/)、米Gradlewareが開発する「Gradle」(http://www.gradle.org/)がある。ここでビルドツールとは、コンパイルやテスト実行、パッケージング、デプロイといった開発作業を自動化するツールのことである。

 従来は、柔軟性を備えるAntが広く使われてきた。ただし、処理の記述量が膨大になりがちなため、近年はより効率的にビルド作業が行えるMavenが普及し始めた。また、柔軟性と効率性を併せ持つGradleの1.0版が2012年6月にリリースされ、注目を集めている(図1)。

図1●Javaによる開発でよく使われるオープンソースのビルドツール
図1●Javaによる開発でよく使われるオープンソースのビルドツール
[画像のクリックで拡大表示]

 そこで、MavenとGradleを取り上げ、「Mavenを利用してきた開発チームが、容易にGradleに移行できるか?」 という観点で、MavenからGradleへの移行性について検証を行った。

後発のGradleはMavenの欠点を解消

 検証対象のMavenおよびGradleが、どのような特徴を持つビルドツールなのか簡単に紹介しよう。

 Mavenは、Antに比べて少ない記述量でビルドができることが高く評価され、人気を博している。標準のルール(ビルド手順)を備えており、独自手順を定義する際は、その標準から外れる部分についてのみ処理を記述すれば済む。すべての処理を記述しなければならないAntの加算的アプローチに対して、標準ルールから外れる部分だけ記述するというMavenの記述スタイルは差分的アプローチと呼ばれている。

 また、Mavenはインターネット上のMavenリポジトリーから、ライブラリをダウンロードして利用する機能を備えている。ビルドに際して必要なライブラリをローカルのディレクトリー(WEB-INF/lib)に配置してクラスパスを設定するという手順を踏む必要がない。ビルドスクリプト(pom.xml)に依存関係を定義するだけで、自動的にインターネットを介してライブラリがダウンロードされる。

 ただし、Mavenには柔軟性に欠ける部分がある。標準機能やプラグインが対応していない処理を行いたい場合には、独自プラグインの作成が必要になって手間がかかる。それがネックとなって、AntからMavenへの移行を試みたものの、結局はAntにとどまったという話を耳にしたことが何度かある。

 一方、後発のGradleは容易にビルドできるというMavenの長所と、自由にビルド手順を定義できるというAntの長所を併せ持つツールである。また、MavenやAntがXMLでビルド手順を記述するのに対して、GradleはGroovyというスクリプトを基としたDSL(Domain Specific Language)で記述する。つまりGradleではプログラミング用に作られたスクリプトを用いるので、条件分岐や繰り返しといった制御構造をMavenより容易に記述できる。

検証テーマ&検証にご協力いただける方を募集しています。詳しくはこちらへ。