第62章 Gradleラッパー

The Gradle Wrapper (henceforth referred to as the “wrapper”) is the preferred way of starting a Gradle build. The wrapper is a batch script on Windows, and a shell script for other operating systems. When you start a Gradle build via the wrapper, Gradle will be automatically downloaded and used to run the build.

Gradleラッパー(以後ラッパーとします)は、Gradleのビルドを実行する方法として推奨されているものです。 ラッパーは、バッチスクリプト(Windows用)とシェルスクリプト(その他のOS用)で提供されます。 このラッパーを使ってGradleビルドを実行すると、Gradleが自動的にダウンロードされ、それを使ってビルドが実行されます。

The wrapper is something you should check into version control. By distributing the wrapper with your project, anyone can work with it without needing to install Gradle beforehand. Even better, users of the build are guaranteed to use the version of Gradle that the build was designed to work with. Of course, this is also great for continuous integration servers (i.e. servers that regularly build your project) as it requires no configuration on the server.

ラッパーは、バージョン管理システムにチェックインするべきです。ラッパーと一緒にプロジェクトを配布することで、前もってGradleをインストールすることなく、誰もがすぐプロジェクトで作業できるようになります。 さらにいいことに、ラッパーを使ってもらうことで、ビルドに使用されるGradleのバージョンをプロジェクトが想定しているものに強制することができます。 もちろん、ラッパーは継続的インテグレーションサーバーで作業するときも非常に便利です。サーバーでビルドの設定を行う必要がないからです。

You install the wrapper into your project by adding and configuring a Wrapper task in your build script, and then executing it.

ラッパーを自分のプロジェクトにインストールするには、Wrapperタスクをビルドスクリプトに追加、設定してから、タスクを実行します。

例62.1 ラッパータスク

build.gradle

task wrapper(type: Wrapper) {
    gradleVersion = '2.0'
}

After such an execution you find the following new or updated files in your project directory (in case the default configuration of the wrapper task is used).

このタスクを実行すると、(wrapperタスクのデフォルト設定が使われていれば、)プロジェクトディレクトリで以下のファイルが作成、または更新されるはずです。

例62.2 ラッパーにより生成されるファイル

Build layout

simple/
  gradlew
  gradlew.bat
  gradle/wrapper/
    gradle-wrapper.jar
    gradle-wrapper.properties

All of these files should be submitted to your version control system. This only needs to be done once. After these files have been added to the project, the project should then be built with the added gradlew command. The gradlew command can be used exactly the same way as the gradle command.

これらのファイルは、すべてバージョン管理システムに格納するべきです。この作業は一回だけ行えば大丈夫です。これらのファイルがプロジェクトに追加されたら、以後のビルドはこのgradlewコマンドで行ってください。 gradlewコマンドは、gradleコマンドと全く同じように使うことができます。

If you want to switch to a new version of Gradle you don't need to rerun the wrapper task. It is good enough to change the respective entry in the gradle-wrapper.properties file, but if you want to take advantage of new functionality in the Gradle wrapper, then you would need to regenerate the wrapper files.

Gradleを新しいバージョンに変更する場合でも、wrapperタスクを再実行する必要はありません。 gradle-wrapper.properties ファイルの、関係するエントリを変更するだけです。 ただ、例えばgradle-wrapperの機能が改良された場合などは、wrapperファイルを再作成してください。

62.1. 設定Configuration

If you run Gradle with gradlew, the wrapper checks if a Gradle distribution for the wrapper is available. If so, it delegates to the gradle command of this distribution with all the arguments passed originally to the gradlew command. If it didn't find a Gradle distribution, it will download it first.

gradlewを実行すると、ラッパーはまず、指定されたディストリビューションが利用できるかどうか確認します。 利用できなければディストリビューションを新しくダウンロードし、利用可能ならgradlewコマンドに指定された引数を、そのディストリビューションのgradleコマンドにそのまま渡して実行します。

When you configure the Wrapper task, you can specify the Gradle version you wish to use. The gradlew command will download the appropriate distribution from the Gradle repository. Alternatively, you can specify the download URL of the Gradle distribution. The gradlew command will use this URL to download the distribution. If you specified neither a Gradle version nor download URL, the gradlew command will download whichever version of Gradle was used to generate the wrapper files.

Wrapperタスクを設定する際は、使いたいGradleのバージョンを指定することができます。その場合、作成されるgradlewコマンドはGradleリポジトリから適切なディストリビューションを選んでダウンロードします。 または、GradleのディストリビューションをダウンロードするURLを直接指定することもできます。この場合は、gradlewコマンドはディストリビューションのダウンロードにそのURLを使用します。 Gradleのバージョンもダウンロード先も指定しなかった場合は、ラッパーファイルを作成したGradleのバージョンがダウンロードするGradleのバージョンに使用されます。

For the details on how to configure the wrapper, see the Wrapper class in the API documentation.

For the details on how to configure the wrapper, see Wrapper

ラッパーの詳細な設定方法についてはWrapperを参照してください。

If you don't want any download to happen when your project is built via gradlew, simply add the Gradle distribution zip to your version control at the location specified by your wrapper configuration. A relative URL is supported - you can specify a distribution file relative to the location of gradle-wrapper.properties file.

gradlewコマンドでプロジェクトをビルドする際、ダウンロード処理を一切走らせたくない場合は、ラッパーの設定で指定した場所にGradleのzipファイルを追加してバージョン管理システムに格納してください。 相対パスもサポートされています。gradle-wrapper.propertiesからの相対パスでディストリビューションファイルを指定することができます。

If you build via the wrapper, any existing Gradle distribution installed on the machine is ignored.

ラッパーを使ってビルドする場合、マシンにインストールされているGradleディストリビューションがあっても無視されます。

62.2. Unixファイルパーミッション Unix file permissions

The Wrapper task adds appropriate file permissions to allow the execution of the gradlew *NIX command. Subversion preserves this file permission. We are not sure how other version control systems deal with this. What should always work is to execute “sh gradlew”.

Wrapperタスクは、生成したgradlew *NIXコマンドを実行できるよう、適切なファイルパーミッションを追加します。 Subversionはちゃんとこのファイルパーミッションを保存してくれますが、他のバージョン管理システムではどのように扱われるのかわかりません。 確実を期すならsh gradlewで実行してください。