【问题标题】:Play framework overriding `application.conf` values based on environment播放基于环境覆盖`application.conf`值的框架
【发布时间】:2018-11-18 12:02:25
【问题描述】:

播放 2.6.x Scala

我在文件夹 {project}/conf/ 中有一个默认的 application.conf,但我想根据环境通过将相应文件作为命令行参数 (as detailed in the docs) 传递来覆盖一些值:

sbt run -Dconfig.file=/conf/qa.confsbt run -Dconfig.resource=qa.conf

但我无法获得覆盖。这是我的文件目录:

application  
    |- playApp1
    |- playApp2  
       |-- conf  
           |-- application.conf 
           |-- qa.conf

我的build.sbt 使 playApp2 成为加载时的默认项目。而且我已经确认 defulat application.conf 正在工作 - 只是覆盖没有。

感谢您的任何想法!

--

更新

这里是播放使用的 HOCON 文件。 application.conf

platform {
  scheme = "http"
  host = "localhost:8080"
}

以及qa.conf中提供的覆盖

include "application.conf"

platform {
  scheme = "https"
  host = "ea311.34.com"
}

【问题讨论】:

  • 请出示您的application.conf

标签: scala playframework


【解决方案1】:

您的问题是关于HOCON,以防您没有意识到。

没有看到你的application.conf,我只能提供一个通用的答案。下面是一个为akka.log-config-on-start 提供默认值的示例,如果定义,它将被Java 系统属性或名为CONFIG_DUMP 的环境变量覆盖:

akka {
  log-config-on-start = false
  log-config-on-start = ${?CONFIG_DUMP}
}

HOCON的这个功能是documented here

【讨论】:

  • 啊,太酷了——我没有看HOCON。喜欢 Human-Optimized Config Object Notation 这个名字。如果您想查看,我在上面发布了我的应用程序配置文件。我也在探索您发布的链接,谢谢!
  • 请点击您问题旁边的复选框以接受此答案,谢谢
【解决方案2】:

如果您首先提供命令行参数,则此方法有效

sbt -Dconfig.resource=qa.conf run

【讨论】:

  • 这对我有用,但是通过 play 和 guice,当我使用替代配置资源时绑定不起作用......太奇怪了
  • @nbpeth 您是否在新的 config.resource 中定义您的模块?例如,如果您有 application.confplay.modules.enabled 键 - 您必须导入 application.confimport "application" 以确保在新资源中启用模块
猜你喜欢
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多