Edited at

Gradle wrapper のバージョン更新についてのメモ

More than 3 years have passed since last update.


Gradle wrapper

Gradle の公式ドキュメントでは Gradle wrapper をプロジェクトに追加することが推奨されている。 また、Gradle wrapper のためのファイルをリポジトリに入れて管理することも推奨されている。 具体的には下記の 4 ファイル。


  • gradlew (Unix Shell script)

  • gradlew.bat (Windows batch file)

  • gradle/wrapper/gradle-wrapper.jar (Wrapper JAR)

  • gradle/wrapper/gradle-wrapper.properties (Wrapper properties)

Gradle wrapper で使用される Gradle のバージョンは gradle/wrapper/gradle-wrapper.properties に記述されており、Gradle のバージョンもバージョン管理されることとなる。


バージョン更新の方法

さて、そんな Gradlew wrapper のバージョンを更新する方法について。


gradle-wrapper.properties の変更

上に書いたように Gradle のバージョンは gradle/wrapper/gradle-wrapper.properties に記述されているので、Gradle wrapper で使用される Gradle のバージョンを更新したい場合は gradle/wrapper/gradle-wrapper.properties を書きかえれば良い。

distributionUrl = https\://services.gradle.org/distributions/gradle-2.10-all.zip

Android Plugin for Gradle のドキュメントでもこの方法が紹介されている。


gradle wrapper にオプション渡す

Gradle 2.4 からは、gradle wrapper タスクに --gradle-version オプションを指定できるようになっており、これでバージョンを更新することもできる。

./gradlew wrapper --gradle-version=2.12

バージョン 2.12 現在の挙動を見たところ、やっていることは gradle/wrapper/gradle-wrapper.properties を変更しているだけっぽい。 (例えば存在しないバージョンを指定してもエラーにならず gradle/wrapper/gradle-wrapper.properties ファイルが書き替えられる。 まじか……。)


./gradlew wrapper し直す

上のどちらかの方法で gradle/wrapper/gradle-wrapper.properties の記述を変更すれば、それで ./gradlew で使用される Gradle のバージョンは変更される。

だが、Gradle のバージョンアップで gradlew ファイルや gradlew.bat ファイル、gradle/wrapper/gradle-wrapper.jar ファイルが変更されていることがたまにあって、それらのファイルも合わせて更新しておきたいところである。 それらのファイルも更新するため、gradle/wrapper/gradle-wrapper.properties の記述を変更したあとに ./gradlew wrapper コマンドを実行すると良い。 Gradle のバージョンアップで Gradle wrapper のファイルに変更があった場合、プロジェクトの既存の Gradle wrapper のファイルが更新される。

しなかったからといって困ることはないと思うけど、せっかくなので。