根据环境播放覆盖`application.conf`值的框架

时间:2017-12-28 00:48:19

标签: scala playframework

播放2.6.x Scala

我在文件夹application.conf中有一个默认的{project}/conf/,但是我希望通过将相应的文件作为命令行参数传递来覆盖某些值,具体取决于环境({{3 }}):

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"
}

2 个答案:

答案 0 :(得分:2)

您的问题是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

答案 1 :(得分:1)

如果您首先提供命令行参数

,则此方法有效
sbt -Dconfig.resource=qa.conf run