Gradleでコンパイル時の文字コードを指定する

GradleのJavaプラグイン使用してビルドを行う時、以下のようなエラーが出る時がある。 これは、Javaコンパイラがビルド時に使用する文字コードと、ソースコード中の文字コードが一致していないことで発生するエラーである。

HogeClass.java:NN: エラー: この文字は、エンコーディングMS932にマップできません

例えばWindows 10では、システムの文字コードはMS932(Shift_JISの拡張版らしい)なので、特に指定しないとJavaコンパイラはMS932でファイルを読み込もうとする。 この時、Javaソースコード中に日本語のコメントが書かれており、かつ、そのファイルの文字コードUTF-8であったりすると、Javaコンパイラで日本語の読込みに失敗し、上記エラーが出力される。

このエラーを発生させないようにするには、コンパイル時に使用する文字コードと、ソースコード文字コードを一致させればよい。

GradleのJavaプラグインを使用している場合、build.gradleを以下のようにすればコンパイル時の文字コードを指定できる。 (以下はUTF-8を指定した場合の例)

apply plugin: 'java'

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}
関連リンク
発生環境