LoginSignup
8
7

More than 5 years have passed since last update.

Gradle 2.5の新機能を試す - Continuous build

Posted at

2015/07/8にGradle Version 2.5がリリースされました。
今回のリリースではいくつかの新機能が追加されているようなので、さっそく試してみます。
本記事ではContinuous buildについてです。

Continuous build

この機能はファイルの変更を監視してタスクの再実行をしてくれるというもので、RubyのGuardのようなものです。
内部的にはWatchServiceというAPIを使用しているようです。そのため、Java 7以降の環境でないとこの機能を使うことができません。
また、ビルドスクリプトの変更にも対応していないという制限もあります。

実行方法

Continuous buildを実行したい場合、-tまたは--continuousオプションを付けます。
オプションを付けて実行すると、指定したタスクが一度実行され、その後変更監視状態になります。
終了したい場合には最後のメッセージにあるようにctrl-dで抜けることができます。

$ gradle -t build
Continuous build is an incubating feature.
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build UP-TO-DATE

BUILD SUCCESSFUL

Total time: 4.213 secs

Waiting for changes to input files of tasks... (ctrl-d then enter to exit)

その後監視対象のファイルに変更があった場合には以下のようにタスクが再実行されます。

Change detected, executing build...

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test
:check
:build

BUILD SUCCESSFUL

Total time: 1.925 secs

Waiting for changes to input files of tasks... (ctrl-d then enter to exit)

再実行の条件

再実行の条件は各タスクで指定されている入力ファイルとタスクの依存関係によって決まっています。

各タスクで指定されている入力ファイルというのは、タスク定義のinputsプロパティで指定されたものを指します。
そのため、独自に定義したタスクでもContinuous buildを使いたい場合にはinputsプロパティを適切に指定する必要があります。

さらにタスクの依存関係によって、指定したタスクが依存しているタスクの入力ファイルも監視対象になります。

例えば典型的なJavaのプロジェクトの場合、buildタスクを指定しているとmainとtestに含まれるファイルの変更によって再実行されますが、
compileJavaタスクを指定している場合には、src/main/java以下のファイルの変更のみによって再実行され、src/main/resourcessrc/test/java以下のファイルの変更では再実行されません。

今後

今回リリースされた機能はあくまでも初期リリースだと言っており、今後のリリースでさらなる機能拡張がされるようです。

参考

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7