【问题标题】:Playframework settings depending on environmentPlayframework 设置取决于环境
【发布时间】:2013-01-21 09:33:47
【问题描述】:

我正在使用 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"

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

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

【问题讨论】:

    标签: scala playframework configuration-files playframework-2.1


    【解决方案1】:

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

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

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

    【讨论】:

    • 你让我开心。但是为什么通过控制台做同样的事情不起作用呢?..
    • 我不知道您运行的是哪个操作系统,但至少在 Windows 中存在一个已知但优先级较低的错误,即 play 无法正确将参数传递给 JVM(这是一个 JVM 参数,而不是播放参数)。 SBT 做得更好;-)
    • 这是一个有趣的方法,但是关键字“Test”从何而来?是否可以对 dev/preprod/prod... 等环境做同样的事情?谢谢
    • 我不完全确定细节,但Test 是由 sbt 提供的。至少有 runCompile 也可以使用(猜猜这些是运行任务?),但你当然不能只构建自己的环境。
    • 惭愧,看起来很有希望
    【解决方案2】:

    另一种方法是覆盖 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 的代码。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多