2017-10-06 187 views
0

我想确保我的应用程序始终构建,运行测试并使用正确的语言环境运行,而不管构建&运行平台。如何让IntelliJ IDEA从Gradle配置中授予user.language和user.country?

所以我有一个简单的单元测试,检查该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选项?

+1

尝试将其添加到创建新JVM进程的任务中,如下面的示例:https://youtrack.jetbrains.com/issue/IDEA-115426#comment=27-610182 – Andrey

+0

@Andrey好主意,但它没有不工作,既不用于命令行构建,也不从IntelliJ – neu242

回答

0

正如您在https://github.com/gradle/gradle/issues/2214所看到的,如果您通过org.gradle.jvmargs设置某些系统属性,它们的设置不正确。但使用systemProp.user.language=nb代替工作。

但即使这样,只有在使用Gradle运行时才有效。因此,您必须更改IJ运行配置以设置这些系统属性,或者您必须使用IJ中的Gradle来运行测试。

+0

我尝试设置'systemProp.user.language',但它没有工作:( – neu242

+0

你在哪里/你是怎么尝试的? – Vampire

相关问题