我想确保我的应用程序始终构建,运行测试并使用正确的语言环境运行,而不管构建&运行平台。如何让IntelliJ IDEA从Gradle配置中授予user.language和user.country?
所以我有一个简单的单元测试,检查该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选项?
尝试将其添加到创建新JVM进程的任务中,如下面的示例:https://youtrack.jetbrains.com/issue/IDEA-115426#comment=27-610182 – Andrey
@Andrey好主意,但它没有不工作,既不用于命令行构建,也不从IntelliJ – neu242