如何在 Play 应用程序中使用 sbt start 指定配置文件?
How to specify config file with sbt start in Play application?
我有一个我认为是开发和部署 Play 2.3.6 应用程序的常见用例:
- 在开发中,我 运行
sbt run
并且应用程序按预期使用 application.conf
。
- 在生产中,我想使用
sbt start
并指定配置文件 production.conf
,它位于与开发配置文件(即 <project root>/conf/
)相同的目录中=36=]
按照 official docs page "Specifying alternative configuration file" 标题下的说明进行操作,例如:
$ sbt start -Dconfig.file=/full/path/to/project/conf/production.conf
应用程序启动时没有错误,但我可以检查 Web 应用程序并看到它正在加载我的 application.conf
开发值,而不是我在 production.conf
中找到的生产值。
我也尝试了建议的方法:
$ sbt start -Dconfig.resource=production.conf
并且服务器无法启动并出现错误:
[error] com.typesafe.config.ConfigException$IO: production.conf: java.io.IOException: resource not found on classpath: production.conf
还有其他人知道如何正确执行此操作吗?
在浪费了几个小时之后,我想通了。如下使用引号正确传递参数:
$ sbt "start -Dconfig.resource=production.conf"
此外,如果您需要指定端口号,请确保它出现在配置选项之后,否则它将被忽略:
$ sbt "start -Dconfig.resource=production.conf 9001"
我有一个我认为是开发和部署 Play 2.3.6 应用程序的常见用例:
- 在开发中,我 运行
sbt run
并且应用程序按预期使用application.conf
。 - 在生产中,我想使用
sbt start
并指定配置文件production.conf
,它位于与开发配置文件(即<project root>/conf/
)相同的目录中=36=]
按照 official docs page "Specifying alternative configuration file" 标题下的说明进行操作,例如:
$ sbt start -Dconfig.file=/full/path/to/project/conf/production.conf
应用程序启动时没有错误,但我可以检查 Web 应用程序并看到它正在加载我的 application.conf
开发值,而不是我在 production.conf
中找到的生产值。
我也尝试了建议的方法:
$ sbt start -Dconfig.resource=production.conf
并且服务器无法启动并出现错误:
[error] com.typesafe.config.ConfigException$IO: production.conf: java.io.IOException: resource not found on classpath: production.conf
还有其他人知道如何正确执行此操作吗?
在浪费了几个小时之后,我想通了。如下使用引号正确传递参数:
$ sbt "start -Dconfig.resource=production.conf"
此外,如果您需要指定端口号,请确保它出现在配置选项之后,否则它将被忽略:
$ sbt "start -Dconfig.resource=production.conf 9001"