Gradle は Make・Ant・Maven の良いとこ取り
今更ですが Gradle について...
Gradle は Make, Ant, Maven につぐ 第4 のビルドツールです。
他のビルドツールからの移行を始めているプロジェクトもかなり増えており、最近 注目されているツールの一つです。
Gradle の特徴を簡単に言ってしまうと、
を全て備えたビルドツールです。はっきり言ってしまえば、Make と Ant と Maven の良いとこ取りしただけなので、それほど目新しさはありません。
しかし、その分 3つのツールの良いところだけをうまく融合させていて 非常に使い易いツールになっていると思います。
私が特に気に入っているところは、Ant タスクやタイプがそのまま使えるところです。
中でも FileSet や Selector が利用できるのはかなり強力だと思います。
Gradle では スクリプトとして Groovy が利用できますが、残念ながら Make で使えるシェルスクリプトほど ファイル操作が得意ではありません。
しかし、Ant タスクやタイプを使えば それを十分に補うことができるのです。
例えば...
- あるファイル ${projectDir}/A.txt を中間ファイル ${buildDir}/tmp/A.tmp にコピーして 何らかの文字列操作を行う。
- 中間ファイル ${buildDir}/tmp/A.tmp からアーカイブ ${distsDir}/A.zip を生成する。
- 中間ファイル ${buildDir}/tmp/A.tmp を削除する。
このような処理を Gradle と Groovy だけで実現するのはちょっと面倒ですが、Ant の FileSet も合わせて使えば
task(type: Copy) { into "${buildDir}/tmp" from ant.path { fileset(dir: "${projectDir}", includes: "A.txt") { depend(targetdir: "${distsDir}") { mapper(type: "merge", to: "A.zip") } } }.list() rename "(.*)\.txt" "$1.tmp" }といったように簡単に 実現できるのです。
パッと見、どこが Gradle の機能で、どこが Groovy のコードで、どこが Ant のタイプなのか わからないくらい融合されています。
それぞれの得意とするところを理解して使えば きっと強い見方になってくれると思います。
また、Ant タスクやタイプがそのまま利用できることで、Ant からの移行も比較的スムーズにできるのではないでしょうか。
今まで育ててきた build.xml は捨てることになりますが、今まで培ってきた知識は何一つ捨てる必要はありません。