2013-02-06 14 views
10

私はplayframework 2.1-RC2を使用しています。まず初めに私はall thesimilarquestionsを見たので、環境ごとにapplication.confファイルを分ける一般的な手順に従いました。だから私はapplication.test.confを持っていると私はテストをこのように実行します。環境に応じたプレイフレーム設定

play -Dconfig.file=./conf/application.test.conf "test" 

私はまだ運、それだけません

play -Dconfig.file=./conf/application.test.conf ~test 

または

play -Dconfig.file=conf/application.test.conf ~test 

などのさまざまな組み合わせを、試してみました選択されず、デフォルトのもの(application.conf)が代わりに使用されます。私は

play -Dconfig.file=./conf/application.dev.conf "run" 

をすれば、他の側から

は、そのアプリケーションは、右の設定を選びます。

どのようにしてテスト構成ファイルを指定できますか?

答えて

13

私は、クロスプラットフォームの互換性のある方法でこれをspecifiyする最も強力な方法はBuild.scalaに直接それを含めることですが見つかりました:

val main = play.Project(appName, appVersion, appDependencies).settings(
    javaOptions in Test += "-Dconfig.file=conf/test.conf", 
    ... 
) 

ボーナス:一度設定すると;-)

+0

あなたは私の一日を過ごしました。しかし、どのようにコンソール経由で同じことをしても動作しないのですか?... – zapadlo

+0

あなたはどのOSが動作しているのか分かりませんが、少なくともWindowsでは既知の優先度の低いバグがあります。 JVMは正しく(これはJVMパラメータであり、再生パラメータではありません)。 SBTはより良い;-) – Leo

+2

これは興味深いアプローチですが、キーワード "Test"はどこから来たのですか? dev/preprod/prodなどの環境で同じことをすることは可能ですか?ありがとうございます – c4k

1
を忘れます

もう1つの方法は、onLoadConfigという名前のGlobalSettings/Globalのメソッドをオーバーライドすることです。これにより、アプリケーションが自分の構成を探す場所を制御できるようになります。

私のアプリケーションの1つでは、以下の設定が私のconf /フォルダの下にあります。それと

conf/application.conf --> configurations common for all environment 
conf/dev/application.conf --> configurations for development environment 
conf/test/application.conf --> configurations for testing environment 
conf/prod/application.conf --> configurations for production environment 

、あなたが設定のためのセットアップのような継承を実装することができます、あなたは共通して、特定の環境モードの3人を持っています。

あなたonLoadConfigメソッド内のコードだけで、メインコンフィギュレーションをロードし、以下のような構成のインスタンスを返し、その後、ご使用の環境に固有の正しいフォールバックの構成を設定する必要があります

**return new Configuration(baseConfig.withFallback(envConfig));** 

は、コードのこのblog post for complete snippetをチェックしてみます。

こちらがお役に立てば幸いです。