- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想确保我的应用始终使用正确的语言环境构建、运行测试和运行,无论构建和运行平台如何。
所以我有一个简单的单元测试来检查 new Locale("nb", "NO") == Locale.getDefault()
在 _JAVA_OPTIONS
、GRADLE_OPTS
或 JAVA_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/
我是一名优秀的程序员,十分优秀!