Je souhaite m'assurer que mon application génère, exécute des tests et s'exécute toujours en utilisant les paramètres régionaux corrects, quelle que soit la version de la plateforme & exécutée.Comment faire en sorte que IntelliJ IDEA honore user.language et user.country de Gradle config?
J'ai donc un simple test unitaire qui vérifie que new Locale("nb", "NO") == Locale.getDefault()
L'exécution de la construction avec des paramètres régionaux dans l'un des _JAVA_OPTIONS
, GRADLE_OPTS
ou JAVA_OPTS
travaux:
GRADLE_OPTS="-Duser.language=nb -Duser.country=NO" ./gradlew build
Mais je suis en train d'éviter définir des variables d'environnement pour chaque développeur et agent de construction, j'ai donc essayé de les définir dans gradle.properties
:
org.gradle.jvmargs=-Duser.language=nb -Duser.country=NO
Cela ne fonctionne pas, car Locale.getDefault()
renvoie maintenant en_US
.
J'ai essayé en les replaçant dans tasks.WithType(JavaCompile)
, cela ne fonctionne pas non plus:
tasks.withType(JavaCompile) {
options.forkOptions.jvmArgs += ['-Duser.language=nb', '-Duser.country=NO']
}
tasks.withType(Test)
fonctionne cependant. Yay!
tasks.withType(Test) {
jvmArgs += ['-Duser.language=nb', '-Duser.country=NO']
}
Mais maintenant au problème: IntelliJ IDEA ne voit toujours pas les options VM -Duser.*
et le test unitaire échoue là.
En bout de @Andrej j'essayé de placer l'environnement dans ProcessForkOptions
comme décrit dans a JetBrains issue:
tasks.withType(ProcessForkOptions) {
environment("LC_ALL", "nb_NO.UTF-8")
}
Aucun succès.
Comment puis-je lui faire honneur à la config Gradle? Dois-je définir manuellement les options de machine virtuelle dans la configuration d'exécution du test?
Essayez de l'ajouter à la tâche qui crée un nouveau processus JVM, comme avec cet exemple: https://youtrack.jetbrains.com/issue/IDEA-115426#comment=27-610182 – Andrey
@Andrey Bonne idée, mais cela n'a pas été fait Ne fonctionne pas, ni pour la construction de la ligne de commande ni d'IntelliJ – neu242