Ошибка кодировки при компиляции 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 шт):

Автор решения: Zhenyria

Ошибка кодировки решается при помощи следующего кода, добавленного в 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, находящийся в корне. Однако, ошибки кодировки всё равно возникали с подпроектами. По какой-то причине настройки родительского проекта не наследовались, поэтому было два варианта решения проблемы:

  1. Добавить настройки в build.gradle каждого модуля, где есть проблемы с кодировкой.
  2. Создать groovy-плагин для подключения в build.gradle каждого модуля и добавить настройки в него.

Я выбрал второй вариант, потому что у меня уже существовал самописный плагин, который подключался в каждый модуль проекта.

→ Ссылка