2017-10-06 3 views
0

ビルド&プラットフォームに関係なく、私のアプリが常にビルドされ、テストが実行され、正しいロケールを使用して実行されていることを確認します。Gradleの設定からIntelliJ IDEAをuser.languageとuser.countryにする方法を教えてください。

GRADLE_OPTS="-Duser.language=nb -Duser.country=NO" ./gradlew build 

しかし、私は避けるようにしようとしている:

は、だから私は new Locale("nb", "NO") == Locale.getDefault()

_JAVA_OPTIONSGRADLE_OPTSまたはJAVA_OPTS作品のいずれかにロケール設定でビルドを実行していることを確認し、簡単なユニットテストを持っていますすべての開発者とビルドエージェントの環境変数を設定していますので、これらを設定しようとしました。:

org.gradle.jvmargs=-Duser.language=nb -Duser.country=NO 

Locale.getDefault()en_USを返すようになっても機能しません。

私はどちらか動作しないこと、tasks.WithType(JavaCompile)でそれらを設定してみました。しかし、作品tasks.withType(Test)

tasks.withType(JavaCompile) { 
    options.forkOptions.jvmArgs += ['-Duser.language=nb', '-Duser.country=NO'] 
} 

。わーい!

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オプションを手動で設定する必要がありますか?

+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

関連する問題