gpt4 book ai didi

java - 如何让 IntelliJ IDEA 从 Gradle 配置中尊重 user.language 和 user.country?

转载 作者:行者123 更新时间:2023-12-03 05:52:59 33 4
gpt4 key购买 nike

我想确保我的应用始终使用正确的语言环境构建、运行测试和运行,无论构建和运行平台如何。

所以我有一个简单的单元测试来检查 new Locale("nb", "NO") == Locale.getDefault()

_JAVA_OPTIONSGRADLE_OPTSJAVA_OPTS 之一中使用区域设置运行构建:

GRADLE_OPTS="-Duser.language=nb -Duser.country=NO" ./gradlew build

但我试图避免为每个开发人员和构建代理设置环境变量,所以我尝试在 gradle.properties 中设置它们:

org.gradle.jvmargs=-Duser.language=nb -Duser.country=NO

这不起作用,因为 Locale.getDefault() 现在返回 en_US

我尝试在 tasks.WithType(JavaCompile) 中设置它们,但这也不起作用:

tasks.withType(JavaCompile) {
options.forkOptions.jvmArgs += ['-Duser.language=nb', '-Duser.country=NO']
}

tasks.withType(Test) 然而有效。耶!

tasks.withType(Test) {
jvmArgs += ['-Duser.language=nb', '-Duser.country=NO']
}

但现在问题来了:IntelliJ IDEA 仍然没有看到 -Duser.* VM 选项,单元测试在那里失败。

作为@Andrej 的提示,我尝试在 ProcessForkOptions 中设置环境,如 a JetBrains issue 中所述:

tasks.withType(ProcessForkOptions) {
environment("LC_ALL", "nb_NO.UTF-8")
}

没有成功。

如何让它遵循 Gradle 配置?我是否必须在测试的运行配置中手动设置 VM 选项?

最佳答案

正如您在 https://github.com/gradle/gradle/issues/2214 中看到的那样,如果您通过 org.gradle.jvmargs 设置某些系统属性,则它们设置不正确。但是使用 systemProp.user.language=nb 反而有效。

但即便如此,也只有在使用 Gradle 运行时才有效。因此,您要么必须更改 IJ 运行配置以同时设置这些系统属性,要么必须使用 IJ 的 Gradle 来运行测试。

关于java - 如何让 IntelliJ IDEA 从 Gradle 配置中尊重 user.language 和 user.country?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46604987/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com