3

有一个奇怪的问题,我不确定它的来源。

我正在使用 Intellij IDEA (2016 3.3) 和 Gradle (v3.3)。我使用的是 Windows 10,土耳其语操作系统。

Gradle 有一个包装器属性文件。(./gradle/wrapper/gradle-wrapper.properties)

该文件的内容,由 Gradle 生成:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip

当我在 Intellij 中打开一个 Gradle 项目时,该文件的最后一行变成了这样:

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-b\u0131n.zip

Intellij 覆盖binb\u0131n. 我检查了\u0131指的是什么,它是 'ı' 字母的 ASCII 码。

而且由于 URL 已损坏,我无法构建项目。

该文件中有很多“i”字母(没有提到整个项目),但不知何故,Intellij 将“bin”中的特定“i”转换为“ı”的 ASCI。

我有这个问题很长时间了,但是当我尝试手动更正字母时,Intellij 第一次坚持要覆盖它。这次唯一的区别是我创建了一个包含多个模块的项目,这意味着有多个 gradle-wrapper.properties 文件。

你们中有人知道为什么以及如何解决这个问题吗?

4

2 回答 2

4

经过一番研究,我发现了这个错误的根源,它不是 Intellij IDEA 而是 Gradle。

@Input
    public String getDistributionUrl() {
        if (distributionUrl != null) {
            return distributionUrl;
        } else if (gradleVersion != null) {
            return locator.getDistributionFor(gradleVersion, distributionType.name().toLowerCase()).toString();
        } else {
            return null;
        }
    }

https://github.com/gradle/gradle/blob/master/subprojects/build-init/src/main/groovy/org/gradle/api/tasks/wrapper/Wrapper.java#L314

此处的 toLowerCase() 方法使用我的语言环境 (tr-TR),因此“BIN”.toLowerCase() 的输出为“bın”。

我在 Gradle-dev Google 组中添加了一个问题并提出了解决方案。

于 2017-02-14T14:29:28.857 回答
1

在 build.gradle 中,添加;

task wrapper(type: Wrapper) {
    gradleVersion = '3.3'
    distributionUrl = "https://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip"
}

为我解决了。

在这里查看更多信息。

于 2017-06-02T01:06:10.703 回答