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"
思わぬ副産物
今のプロジェクトでは、日本語クラス名の Java クラスを一部で実装しています。Gradle で jar ファイルをビルドすると、その中にある日本語 Java クラスが参照時にエラーを起こすことが判明しました。
私の環境では発生しなかったのですが、他のメンバーの環境では発生しました。
Gradle の文字コード設定をしているのは私だけでした。他のメンバーは Gradle がコンソールに出力するときの文字化けを Eclipse コンソール側の文字コードを変更することで回避してたのです。
もしやと思ってファイル入出力の文字コードを Java ファイルと Gradle で統一するようにしたところ、エラーが発生せずに日本語クラスでも参照できるようになりました。
Gradle の文字コード設定をいじっていないと、この事象の解決に時間がかかっていたと思います。
遊んでおいてよかったです。
今回の気づき
IDE と並行して、ビルドツールを使っている場合は文字コードを統一しておくことが重要です。
ともかく早めに気づくことができたのは幸いでした。ビルドツールは早期に導入して、継続的インテグレーションしておかないとやはりダメですね。
最後の最後で、トラブったら絶対におかしな一時対応とかしそうです。