Ошибка кодировки при компиляции Gradle проекта
Имеется Java-проект на Gradle. При выполнении команды ./gradlew build возникает ошибка компиляции:
unmappable character for encoding Cp1251
В проекте есть строки на кириллице, и для всех файлов проекта задана кодировка UTF-8, но ошибка всё равно возникает. Я добавил в build.gradle следующие строки:
compileJava {
options.encoding = 'UTF-8'
}
tasks.withType(Javadoc) {
options.encoding = 'UTF-8'
}
Никаких изменений. Единственное, что помогает - это ручное изменение кодировки в некоторых файлах с кириллицей с UTF-8 на windows-1251, но это не выглядит, как чистое решение. В качестве рабочей системы использую Windows 8.1.
Каким образом я могу решить данную проблему?
Ответы (1 шт):
Ошибка кодировки решается при помощи следующего кода, добавленного в build.gradle:
compileJava.options.encoding = 'UTF-8' // устанавливает кодировку для компилируемого кода
javadoc.options.encoding = 'UTF-8' // устанавливает кодировку для генерируемой документации
compileTestJava.options.encoding = 'UTF-8'
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
Это распространённое решение в интернете, но оно не работало в моём случае. Так как у меня многомодульный проект, я поместил эти настройки в главный build.gradle, находящийся в корне. Однако, ошибки кодировки всё равно возникали с подпроектами. По какой-то причине настройки родительского проекта не наследовались, поэтому было два варианта решения проблемы:
- Добавить настройки в
build.gradleкаждого модуля, где есть проблемы с кодировкой. - Создать
groovy-плагин для подключения вbuild.gradleкаждого модуля и добавить настройки в него.
Я выбрал второй вариант, потому что у меня уже существовал самописный плагин, который подключался в каждый модуль проекта.