在 Gradle 中正确显示 UTF-8 文本

问题描述 投票:0回答:8

我有一个任务:

task info<<{
    println "Gradle — система автоматической сборки, построенная на принципах Apache Ant и Apache Maven, но предоставляющая DSL на языке Groovy вместо традиционной XML-образной формы представления конфигурации проекта."
}

当我使用命令时:

gradle info -Dfile.encoding=UTF-8

文字显示不正确。如何修复它?谢谢。

text utf-8 build gradle
8个回答
96
投票

我使用

build.gradle
中的下一个设置,它对我来说效果很好:

compileJava.options.encoding = 'UTF-8'

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

38
投票

当执行 Gradle 构建的 JVM(例如 Gradle Daemon)启动时,需要正确设置

file.encoding
系统属性。实现这一目标的一种方法是使用
export GRADLE_OPTS="-Dfile.encoding=utf-8"
。另一种可能有效的方法是将
systemProp.file.encoding=utf-8
添加到
gradle.properties
。当然,这假设构建脚本文件实际上使用 utf-8 编码。要查看您的平台(以及 Gradle)的默认编码是什么,请在构建脚本中打印出系统属性的值。


35
投票

在 gradle.properties 中

org.gradle.jvmargs='-Dfile.encoding=UTF-8'

12
投票

如果您使用 kotlin DSL,那么:

build.gradle.kts:

tasks.withType<JavaCompile> {
    options.encoding = "UTF-8"
}

9
投票

对于我在 build.gradle 中唯一的作品:

apply plugin: 'java'
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}
repositories {
    mavenCentral()
}
....
test {
    systemProperty "file.encoding", "utf-8"
}

1
投票

可能的解决方案是将 gradle 构建调用包装到 sh 脚本中,并在此脚本中导出编码设置: buildScript.sh:

export GRADLE_OPTS="-Dfile.encoding=utf-8" 
gradlew clean build ...

附注此解决方案已成功检查并提供


0
投票

以上所有解决方案都需要更改 IDE 设置并重新启动 IDE。

我通过向 build.gradle 添加一些行来解决这个问题

compileJava.options.encoding = 'UTF-8'
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

test {
    systemProperty "file.encoding", "utf-8"
    useJUnitPlatform()
}

0
投票

我的情况是在

~/.gradle/gradle.properties
写了中文,然后加了
systemProp.file.encoding=utf-8
export GRADLE_OPTS="-Dfile.encoding=utf -8"
不生效。

我想原因可能是在加载这些东西之前,

~/.gradle/gradle.properties
已经以默认编码加载了。

我最终的解决办法是把中文转成Unicode,比如

\u6211\u7684\u8d44\u6e90
然后写
~/.gradle/gradle.properties

© www.soinside.com 2019 - 2024. All rights reserved.