うなぎや

Javaとかについて書いています。

Gradleについて

最近Gradleを勉強しているので、その書き残し。

 

Gradleとは

2007年頃に開発がスタートし、SpringフレームワークAndroidアプリケーション開発のビルドツールとして採用されるなどで注目される。

大きな特徴としてはビルドスクリプトを「シンプルに記述出来る」という点。

また、AntやMavenと言った既存のビルドツールを活用しているため、既存の資産を活かしてGradleを取り込めます。

 

ビルドツールとは

ソースコードコンパイルしてクラスファイルを生成する。

・テストを実行してテスト結果やカバレッジ測定結果を出力する。

Javadocなどのドキュメントを生成する。

・jarやwarを生成する

・ライブラリを自動でダウンロードし、依存関係の解決を行う

 

Javaの主なビルドツール

Ant

JavaのビルドツールでXMLスクリプトを構成する。

提供機能は多くないため、シンプルで使いやすい。

しかし、複雑なことをするにはビルドスクリプトが冗長になってしまい、メンテナンスが困難になる。

ライブラリの依存関係を管理できないため、手作業での解決となる。

 

Maven

Antと同じくXMLスクリプトを構成する。

POM(プロジェクトオブジェクトモデル)という概念を持ち、Antのビルドスクリプトが冗長するという弱点を解決。

POMにメタデータを持たせることでライブラリの依存関係を自動的に解決することができるようになる。高機能だが仕様の理解が重要であり、仕様外のことをするのは難易度が高い。

 

Gradle

Antの柔軟性とMavenの依存性解決という良い点を組み合わせ、シンプルなスクリプトで記述が出来る。言語はGroovy言語で書かれている。GroovyとJavaは言語として似ている部分があり、Javaエンジニアにとっては理解しやすい。

 

 

便利機能

Gradle ラッパー

プロジェクトにGradleを導入する際、メンバーや担当者がGradleをインストールする必要がない。

GradleにはGradleラッパー機能というものがあり、gradleプロジェクトのフォルダを配布するだけ、インストール不要でビルドや各タスクを実行することが出来る。

通常Gradleの実行にはコマンド gradle ~~ の用に指定するが、未インストール環境では gradlew ~~ の用にwを一文字つけるだけで同じようにタスクを実行出来る。