Playframework设置取决于环境

时间:2013-02-06 08:41:47

标签: scala playframework configuration-files playframework-2.1

我正在使用playframework 2.1-RC2。首先,我看到了all the similar questions,所以我遵循了按环境分离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"

然后应用程序选择正确的配置。

那么如何指定测试配置文件?

2 个答案:

答案 0 :(得分:13)

我发现以跨平台兼容的方式指定它的最强大的方法是将它直接包含在Build.scala中:

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

奖励:配置一次并忘记; - )

答案 1 :(得分:1)

另一种方法是覆盖GlobalSettings / Global名为 onLoadConfig 的方法,这使您可以控制应用查找配置的位置。

所以在我们的一个应用程序中,我在下面为我的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代码。

我希望这会有所帮助。