10

我正在使用 playframework 2.1-RC2。首先,我已经看到了所有 类似的 问题,所以我遵循了每个环境分离 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"

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

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

4

2 回答 2

14

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

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

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

于 2013-02-06T09:12:24.187 回答
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));**

尝试查看此博客文章以获取完整的代码片段。

我希望这有帮助。

于 2015-05-19T16:50:49.343 回答