【问题标题】:Show UTF-8 text properly in Gradle在 Gradle 中正确显示 UTF-8 文本
【发布时间】:2014-02-11 14:01:41
【问题描述】:

我有一个任务:

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

当我使用命令时:

gradle info -Dfile.encoding=UTF-8

文本显示不正确。如何解决?谢谢。

【问题讨论】:

    标签: text utf-8 build gradle


    【解决方案1】:

    我在build.gradle 中使用下一个设置,它对我来说很好:

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

    【讨论】:

    • 我相信遍历所有 JavaCompile 任务也会设置 compileJava 任务的编码。因此,您不需要 sn-p 中的第一行。
    • 不适合我,我想这不是编码集的最后一个,我想这已经被覆盖了
    • Intellij 设置,编译器选项对我不起作用,这个起作用了。
    【解决方案2】:

    file.encoding 系统属性需要在执行 Gradle 构建(例如 Gradle 守护程序)的 JVM 启动时正确设置。实现此目的的一种方法是使用export GRADLE_OPTS="-Dfile.encoding=utf-8"。另一种可行的方法是将systemProp.file.encoding=utf-8 添加到gradle.properties。当然,这假设构建脚本文件实际上使用的是 utf-8 编码。要查看您的平台(以及 Gradle 的)默认编码是什么,请在构建脚本中打印出系统属性的值。

    【讨论】:

    • 我的系统文件.encoding=Cp1251。因此,如果我在我的机器上将其更改为 UTF-8,这是否能解决我的一般问题?
    • 重要的是Java平台编码
    • 我不知道您所说的“Gradle 任务信息拾取 JAVA_TOOL_OPTIONS”是什么意思。尝试设置GRADLE_OPTS(在 Windows 上,您可能需要在此之后打开一个新的命令提示符),确保停止守护程序一次(gradle --stop),然后编辑文件以强制重新编译。如果这没有帮助,很可能是您的文件不是 utf-8。
    • systemProp.file.encoding=utf-8 添加到gradle.properties 不起作用。 GRADLE_OPTS 工作。
    • 我遇到了类似的问题,并一直在尝试使用此处给出的建议来解决(在 Windows 上运行)。我已经验证我的 file.encoding 设置为 utf-8 ('println System.getProperty("file.encoding")),但仍然无法正确输出特殊字符。有什么建议?谢谢。
    【解决方案3】:

    在 gradle.properties 中

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

    【讨论】:

      【解决方案4】:

      如果您使用的是 kotlin DSL,那么:

      build.gradle.kts:

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

      【讨论】:

        【解决方案5】:

        我只在 build.gradle 中使用它:

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-07-06
            • 2020-04-22
            • 2023-04-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-09
            相关资源
            最近更新 更多