大した内容じゃないんだけどメモ。
[Gradleプロジェクトの文字化け]
先日実験した、Gradleプロジェクト内にKotlinとJavaを同居させるやつをついに実戦投入してみた。
より正確にいうと、mavenでビルドされたJavaのライブラリを、別のKotlin+Gradleプロジェクトが利用していたので、mavenの部分を丸っとGradleに書き換えた。
GradleのKotlin DSLの部分は特に問題なく書き換えられたのだが、実際にビルドしてみるとコンソールによくわからないエラーが表示された。エラー自体が文字化けしていて正確なエラー内容は理解できなかったが*1が、次のことは読み取れた。
[コンパイル時の文字コード指定]
そういえばmavenプロジェクトでもコンパイル時の文字コードをUTF-8に指定していたのを思い出して、Gradleでの指定方法を検索すると、次の記事を見つけた。
build.gradleに以下のように書けばよい、と教えてくれている。
tasks.withType(JavaCompile) { options.encoding = 'UTF-8' }
これは、Gradleのスクリプトだが、Kotlin DSLではなくGroovy DSLで書かれている。
自分の触っているプロジェクトはKotlin DSLで統一されているので、そちらの書き方を調べた。ちょっと時間がかかったが、公式サイトで何とか発見できた。
withType()を使うのは同じだが、タスクの型を指定するのに<>記法を使って以下のように書く。
// build.gradle.kts
tasks.withType<Tar>().configureEach { enabled = false }
上記はあくまで公式サイトのサンプルなので、文字コードを指定する処理を書き直すと以下のようになった。
// build.gradle.kts
tasks.withType<JavaCompile>().configureEach { options.encoding = "UTF-8" }
これで無事コンパイルも通って、mavenでビルドしてからgradleでビルド、と言う二度手間が無くなった。