ビルドツールGradleスタートアップガイドの紹介「Grails/Groovy工房vol.2」[後編]
Gradleは、Groovyを利用してビルドスクリプトを記述することができるビルドツールです。本コラムでは、Javaの開発にターゲットを絞り、すぐ使えて実際の開発現場へ適用できることを目的とした、ビルドツールGradleのスタートアップガイドを紹介していきます。
テクノロジーコラム java
- 2013年03月02日公開
各種タスクの追加
■4. よく使われるツールの実行 |
では、ビルドに新たなタスクを追加してみましょう。
1. 新規タスクの追加
新しくタスクを定義するには、ビルドスクリプトへ以下のように記述します。
処理はJavaプログラマにとってなじみやすいGroovyスクリプトで記述することができます。Groovyについてはここでは割愛しますが、知りたい方はぜひ書籍 『プログラミングGROOVY』 をご利用ください。
おなじみのhelloタスクは次のようになります。
helloタスクを実行すると、以下のように出力されます
$ gradle hello :hello Hello world! BUILD SUCCESSFUL
2. タスクの依存関係設定
タスクに依存関係を設定することができます。
タスクfirstに依存するタスクsecondは以下のようになります。
タスクsecondを実行すると、依存するタスクfirstが先に実行されます。
依存関係に設定するタスクは、その時点で宣言されていないものを指定してもかまいません。
3. デフォルトタスクの設定
デフォルトタスクは以下のように設定します。
defaultTasks 'タスク名'
デフォルトタスクはカンマ区切りで複数指定することもできます。例えば、タスクhelloとタスクbyeをデフォルトタスクに設定するならば、次のようにします。
これでタスクを指定せずにgradleを実行すると、タスクhelloとタスクbyeが順番に実行されます。
4. よく使われるツールの実行
新しくタスクを追加し、Javaプロジェクトでよく使われる以下を実行するようにします。
- Checkstyle
- FindBugs
- Cobertura
- JavaNCSS
- Javadoc生成
4.1 Checkstyle
Checkstyleは、静的解析の分類の中で主にコーディング規則に重点を置いたオープンソースツールで、スタイルチェッカーとも言われています。Javaソースコードを分析し、その結果をレポートしてくれます。
GradleにはCheckstyleを実行するためのCheckstyleプラグインがありますので、それを活用します。ビルドスクリプトに以下を追加してください。
このプラグインを追加することで、checkタスクにてCheckstyleが実行されるようになります。
また、以下のタスクが追加されます。
タスク | 説明 |
---|---|
checkstyleMain | プロダクトコードを対象にCheckstyleを実行する |
checkstyleTest | テストコードを対象にCheckstyleを実行する |
checkstyleSourceSet | 指定された特定のソースコードセットを対象にCheckstyleを実行する |
そのままではチェックで警告が出るとビルドが中断されてしまいます。それを避けるには以下を追加してください。
テストコードをチェックしない場合は、以下を追加してください。
プロジェクトのルートディレクトリをPROJECTROOTとしたとき(以降も同様)、Checkstyleの設定ファイルはデフォルトでPROJECTROOT/config/checkstyle/checkstyle.xmlですが、それ以外にしたい場合は、実施するタスクでconfigFileを指定します。例えばcheckstyleMainの設定ファイルが./checkstyle.xmlの場合は次のようになります。
Checkstyleのバージョンを指定する場合は、dependenciesへ以下を追加してください。特に理由がない場合は、最新版を指定することをおすすめいたします。
以上でcheckstyleの設定は完了です。タスクcheckにてcheckstyleが実行され、レポートが プロジェクトルート/build/reports/checkstyle 配下に出力されます。
その他、Checkstyleプラグインで設定可能な項目については、 Gradle User GuideのCheckstyleExtension をご覧ください。
4.2. FindBugs
FindBugsは、静的解析の分類の中で主にバグを発見するオープンソースツールです。コンパイル後のクラスファイルを分析し、その結果をレポートしてくれます。
GradleにはCheckstyleと同様、FindBugsを実行するためのFindBugsプラグインがあります。
まずプラグインを利用するために、ビルドスクリプトへ以下を追加してください。
このプラグインを追加することで、checkタスクにてFindBugsが実行されるようになります。
また、以下のタスクが追加されます。
タスク | 説明 |
---|---|
findbugsMain | プロダクトコードを対象にFindBugsを実行する |
findbugsTest | テストコードを対象にFindBugsを実行する |
findbugsSourceSet | 指定された特定のソースコードセットを対象にFindBugsを実行する |
このままではチェックで警告が出るとビルドが中断されてしまいます。それを避けるには以下を追加してください。
FindBugsのルール追加・除外などの設定ファイルであるincludeFilter(ルール追加)、excludeFilter(ルール除外)を指定することもできます。例えばfindbugsMainでルール除外設定ファイルを指定する場合は次のようになります。
FindBugsのバージョンを指定する場合は、dependenciesへ以下を追加してください。特に理由がない場合は、最新版を指定することをおすすめします。
これで設定は完了です。タスクcheckにてFindBugsが実行され、レポートが プロジェクトルート/build/reports/findbugs 配下に出力されます。
その他、FindBugsプラグインで設定可能な項目については、 Gradle User GuideのFindBugsExtension をご覧ください。4.3. Cobertur
Coberturaはテストのカバー対象範囲を調べるオープンソースのカバレッジツールです。テスト実行時にカバー範囲を調べ、それをレポートしてくれます。
CoberturaにはGradleプラグインがありませんので、CoberturaのAntタスクを利用します。
ここでは、Coberturaを実行するためのスクリプトファイルとしてcobertura.gradleを用意しました。
レポートファイルの出力先は PROJECTROOT/build/reports/cobertura に設定しており、HTMLレポートとXMLレポートの両方を出力するようにしています。
このcobertura.gradleを特定のディレクトリへ配置してください。本書ではこういったスクリプトファイル置き場をPROJECTROOT/gradle とします。
そして、そのファイルをbuild.gradleから読み込むため、以下を追記してください。
これで設定は完了です。タスクtestにてCoberturaが実行され、レポートが PROJECTROOT/build/reports/cobertura 配下に出力されます。
4.4. JavaNCSS
JavaNCSSはコードカウントを行うオープンソースのメトリクス計測ツールです。Javaソースコードをカウントし、その結果をレポートしてくれます。
JavaNCSSにはGradleプラグインがありませんので、JavaNCSSのAntタスクを利用します。
ここでは、JavaNCSSを実行するためのスクリプトファイルとしてjavancss.gradleを用意しました。
レポートファイルの出力先は PROJECTROOT/build/reports/javancss に設定しており、XMLレポートを出力するようにしています。
このjavancss.gradleをFindBugs設定で作成したスクリプトファイル置き場 PROJECTROOT/gradle へ配置してください。もしFindBugs設定を実施していない場合は、そのファイルをbuild.gradleから読み込むため、以下を追記してください。
これで設定は完了です。タスクcheckにてJavaNCSSが実行され、レポートが PROJECTROOT/build/reports/javancss 配下に出力されます。
4.5. Javadoc生成
Javadocはデフォルトで使えるようになっています。以下を実行すれば、 PROJECTROOT/build/docs/javadoc にJavadocが生成されます。
gradle javadoc
タスクcleanやbuildとあわせて実行したい場合には、以下のようにタスクを複数指定してください。
gradle clean build javadoc
これで、タスクcleanとbuildの後に、javadocが実行されます。
Javadocで設定可能な項目については、Gradle User GuideのJavadoc (翻訳版はこちら)をご覧ください。
5. ここまでのビルドスクリプトまとめ
今までに作成したビルドスクリプトbuild.gradleを掲載しておきます。
本ドキュメントの今後
本ドキュメントでは、Javaのプロジェクトを対象に、Gradleを用いてビルドを行い、各種タスクを追加できるようになるまでをまとめてみました。
本ドキュメントの今後ですが、Gradleのうまみをより感じていただくために、以下のような情報を追加しようと考えております。
- Antタスクを使う
- マルチプロジェクトをビルドする
- オレオレディレクトリ構成対応
- Eclipseプロジェクトファイルを生成する
- Gradleをインストール不要にする(Gradlew)
- きめ細かなテスト
- Javaのバージョン指定
- Antからの移行戦略
- Mavenからの移行戦略
- IDEからの利用
ご期待ください。
では、よいGroovy/Gradleライフを!
作品公開の場としてのWebに可能性を感じ入社。 XML関連業務や継続的インテグレーション社内普及活動などを経て、 2013年より新たに設立されたHTML5推進室の主要メンバーとしてWeb技術を推進している。 セミナーでの講演や書籍執筆などの活動も行っている。 著書に『HTML5プロフェッショナル認定試験 レベル1 対策テキスト&問題集』(マイナビ/共著)。得意領域はCSS。 調理歴20年超。本人も原因不明のアヒル好き。