Groovyベースのビルド管理ツールGradleを使ってみる

Gradleってなに?

簡単に言えばMaven2のようなものですね。
あらかじめ様々な機能がプラグインとして用意されているビルドツールです。

勝手に選んだ主な特徴のトップ3は↓。

  • 設定ファイルをXMLではなく、GroovyによるDSLで書く(build.gradleファイル)
  • Groovyコードを含むプロジェクトの設定が非常に簡単
  • Maven2のディレクトリ構成を踏襲しているので、Maven2との同居も可能

といった感じで、とりあえずあっさりと流しておきます

入手・インストールなど

↓ダウンロードはこちらからどうぞ。

展開したディレクトリをGRADLE_HOME環境変数に指定して、PATHに$GRADLE_HOME/bin通すだけの、よくあるインストール方法です。

$ gradle --version

------------------------------------------------------------
Gradle 0.9-20091103023134+0900
------------------------------------------------------------

Gradle buildtime: 200911323134秒 JST
Groovy: 1.6.4
Ant: Apache Ant version 1.7.0 compiled on December 13 2006
Ivy: 2.1.0-rc2
Java: 1.6.0_15
JVM: 14.1-b02-90
JVM Vendor: Apple Inc.
OS Name: Mac OS X

などと表示されればOK.

タスクの実行の仕方

$ gradle -t

とすれば、現在実行可能なタスクが表示されます。

例えば:cleanとか:testのようなフォーマットで表示されますが、それぞれ

$ gradle clean
$ gradle test

のように実行できます。コロンはいりません。


もちろん、Mavenなどと同じく一度に複数のタスクも指定できます。

$ gradle clean test

Groovyプロジェクトの基本構成

ディレクトリはMavenと同じ規約に従います。
すなわち、こんな感じ。

APP_PROJECT_ROOT
|-- build.gradle       →設定ファイル
|-- build/             →Gradleが生成する各種ファイル
`-- src
    |-- main           →プロダクト用
    |   |-- groovy/    →*.groovyファイルを格納 (*.javaを混在させることも可能)
    |   |-- java/      →*.javaファイルを格納
    |   `-- resources/ →リソースファイルを格納
    `-- test           →テスト用
        |-- groovy/    →*.groovyファイルを格納 (*.javaを混在させることも可能)
        |-- java/      →*.javaファイルを格納
        `-- resources/ →リソースファイルを格納

Groovyプロジェクトの設定ファイルのサンプル

以下の内容のbuild.gradleファイルをプロジェクトルートディレクトリに置いておけばOK.

groovyのバージョンはお好きなバージョンで。

usePlugin 'groovy'

repositories {
    mavenCentral()
}
dependencies {
    groovy group:'org.codehaus.groovy', name:'groovy', version:'1.7-beta-2'
    testCompile group: 'junit', name: 'junit', version: '4.7' // Javaのテストコードを書く場合は必要
}

dependenciesに記載したライブラリは、Ivyを使って自動的に取得します。
もちろん、Mavenリポジトリ上のライブラリも取得できます。


GroovyTestCaseを継承してテストを書くだけであれば、Groovyの中に必要なJUnitのライブラリ一式が含まれるので、依存ライブラリのjunitは不要です。groovyだけでOk.
src/test/javaにテストコードを書くつもりなら、上記のようにjunitも必要です。


さて、上記の設定で、gradle testを実行すると、src/test/groovy, src/test/javaのすべてのテストを実行してくれます。素敵です。

もっと詳しく

割と力が入ってるドキュメントがあるので、それを読みましょう。

英語ですけど、そんなに難しくないと思います。
サンプルとか見れば何となくわかりますし。


といったところで、ひとまず。

2010/10/14追記

なんだか一年も経って最近ブクマがつきはめたようなので、ハマる前に注意書きをば。

usePlugin 'groovy'

という宣言はもう過去のものになり、現状では↓と書くようになってます。

apply plugin:'groovy'

ご注意ください。