내 앱이 항상 빌드되고, 테스트를 실행하며, 실행 플랫폼 &에 관계없이 올바른 로케일을 사용하여 실행되도록하고 싶습니다.Gradle 구성에서 IntelliJ IDEA가 user.language 및 user.country를 사용하도록하려면 어떻게합니까?
GRADLE_OPTS="-Duser.language=nb -Duser.country=NO" ./gradlew build
하지만 피하려고 노력 해요 :
그래서 나는new Locale("nb", "NO") == Locale.getDefault()
이 _JAVA_OPTIONS
, GRADLE_OPTS
또는 JAVA_OPTS
작품 중 하나에 로케일 설정과 빌드를 실행하는 것을 확인하는 간단한 단위 테스트가 모든 개발자를위한 환경 변수를 설정하고 에이전트를 빌드 했으므로 이것들을 설정해 보았습니다. gradle.properties
:
org.gradle.jvmargs=-Duser.language=nb -Duser.country=NO
Locale.getDefault()
이 이제 en_US
을 반환하므로 작동하지 않습니다.
tasks.withType(JavaCompile) {
options.forkOptions.jvmArgs += ['-Duser.language=nb', '-Duser.country=NO']
}
tasks.withType(Test)
그러나 작동합니다
tasks.WithType(JavaCompile)
에서 그들을 설정했습니다. 예!
tasks.withType(Test) {
jvmArgs += ['-Duser.language=nb', '-Duser.country=NO']
}
하지만 지금은 문제에
:하게 IntelliJ IDEA는 여전히-Duser.*
VM 옵션을 참조하지 않고, 단위 테스트가 실패합니다.
tasks.withType(ProcessForkOptions) {
environment("LC_ALL", "nb_NO.UTF-8")
}
없음 성공 : a JetBrains issue에 설명 된대로 @Andrej에서 팁으로
나는ProcessForkOptions
환경을 설정했습니다.
어떻게하면 Gradle 구성을 준수하게 할 수 있습니까? 테스트를 위해 Run Configuration에서 VM 옵션을 수동으로 설정해야합니까?
이 예제와 같이 새 JVM 프로세스를 생성하는 태스크에 추가하십시오. https://youtrack.jetbrains.com/issue/IDEA-115426#comment=27-610182 – Andrey
@Andrey 좋은 아이디어이지만 좋은 아이디어는 아닙니다. 명령 줄 구축이나 IntelliJ에서 작동하지 않습니다. – neu242