WindowsでGradleが扱うリソースのファイルエンコーディング設定
問題
Spring Bootの自動テストで data.sql
を作成しているのですが、 gradle check
でテストを実行すると、失敗してしまう。
原因を調べたのですが、どうも日本語のカラムを比較しているところで失敗しているようで、出力を見る感じ data.sql
のファイルエンコーディングが MS932
で扱われてしまっているようでした。
この解決策としては、
gradle -Dfile.encoding=UTF-8 check
とすれば良いことに気づきました。
ただ、毎回この -Dfile.encoding=UTF-8
を打ちたくないので、デフォルトオプションに指定したく、色々と試行錯誤した結果、次の設定が等価のようです。
解決手順
自分はGradleをSDKMAN!でインストールしてGit Bashでのみ利用しています。解決の確認もこの環境で行っています。
まず、環境変数 GRADLE_USER_HOME
を設定します [1]。
echo 'export GRADLE_USER_HOME=$HOME/.gradle' >> ~/.bashrc
続いて、 gradle.properties
でファイルエンコーディングを設定します。
mkdir -p ~/.gradle echo 'file.encoding=UTF-8' >> ~/.gradle/gradle.properties
これでOKでした。
他の方法、 GRADLE_OPTS
環境変数に設定するなど次のページに書かれている方法ではいずれも目的を達成できませんでした。
UTF-8として認識されないまま、あるいは、リソースファイルの読み取りだけでなくGradleコンソール出力もUTF-8になってしまう(結果、出力の日本語が化けてしまう)という結果となりました。