読者です 読者をやめる 読者になる 読者になる
おもに Groovy やアジャイル開発について勉強していることを書き散らしてます。
わたしのひとりごとが、だれかのお役に立てればと…

Gradle があつかうファイル入出力の文字コードを設定する

Eclipse のデフォルト文字コードUTF-8 にしているため、Windows では Gradle 実行結果がコンソールで文字化けするという事象が発生していました。

どうやら明示的にを指定しなければ、OS デフォルトの文字コードが採用されるようです。Windows の場合は Shift_JIS だと思います。Eclipse コンソールが UTF-8 で、Gradle の出力が Shift_JIS ということで文字化けです。

ここで Eclipse コンソールの文字コードを変更すればよかったのですが、Gradle の設定を変えることを選択しました。

file.encoding で指定する

Gradle も Java で動いているので、Java のファイル入出力の文字コードを変更すればいいようです。色々と試しました。そして、その文字コードシステムプロパティの file.encoding で指定します。
(-Dfile.encoding=UTF-8 という感じです)

Windows の場合は %GRADLE_HOME%/bin/gradle.bat を、
それ以外の場合は %GRADLE_HOME%/bin/gradle を編集します。
(%GRADLE_HOME% は Gradle のインストールディレクトリです)

DEFAULT_JVM_OPTS という環境変数で、JVM 引数を設定できるみたいです。次のように設定を追記します。

set DEFAULT_JVM_OPTS="-Dfile.encoding=UTF-8"

これで、Gradle を実行するときのファイル入出力の文字コードUTF-8 になります。

思わぬ副産物

今のプロジェクトでは、日本語クラス名の Java クラスを一部で実装しています。Gradle で jar ファイルをビルドすると、その中にある日本語 Java クラスが参照時にエラーを起こすことが判明しました。
私の環境では発生しなかったのですが、他のメンバーの環境では発生しました。

Gradle の文字コード設定をしているのは私だけでした。他のメンバーは Gradle がコンソールに出力するときの文字化けを Eclipse コンソール側の文字コードを変更することで回避してたのです。
もしやと思ってファイル入出力の文字コードJava ファイルと Gradle で統一するようにしたところ、エラーが発生せずに日本語クラスでも参照できるようになりました。

Gradle の文字コード設定をいじっていないと、この事象の解決に時間がかかっていたと思います。
遊んでおいてよかったです。

今回の気づき

IDE と並行して、ビルドツールを使っている場合は文字コードを統一しておくことが重要です。

ともかく早めに気づくことができたのは幸いでした。ビルドツールは早期に導入して、継続的インテグレーションしておかないとやはりダメですね。
最後の最後で、トラブったら絶対におかしな一時対応とかしそうです。