播放 - 如何为Dev/Prod使用不同的配置文件?

emm*_*a90 3 scala sbt playframework playframework-2.0

我有一个具有以下配置的项目

  • Commons.conf
  • Application.conf 发展
  • Production.conf 用于生产

双方application.confproduction.conf包括commons.conf

我必须使用dist任务构建应用程序来生成zip文件,然后使用projectname.bat提供的文件启动它.

javaOptions ++= Seq("-Dconfig.file=conf/production.conf")在build.sbt中添加了但似乎没有用.我无法在命令行上启动应用程序,因为我确实希望它自动完成..conf为开发和生产单独执行文件配置的更好方法是什么,并且生产dist任务的任务是什么?

Jac*_*cko 9

在启动应用程序时,Play会自动配置为application.conf从类路径加载.要使用替代方法覆盖此选项,您需要在启动时指定此选项.

请注意,无论您是部署到Windows .bat还是使用Linux 启动应用程序,或者.sh您正在执行该文件,如下所示: -

$ target/universal/stage/bin/<project-name>
Run Code Online (Sandbox Code Playgroud)

以上将执行您的.bat文件(如果您在Microsoft上).

指定备用配置文件(几个选项)

因此,如果您想为prod/dev提供单独的配置文件,请使用dev的默认值application.conf并使用production.conffor prod.

如果你放入application.conf内部,conf你可以按如下方式指定: -

$ /path/to/bin/<project-name> -Dconfig.resource=production.conf
Run Code Online (Sandbox Code Playgroud)

如果application.conf没有与您的应用程序打包(即您没有将其放入,conf则需要指定完整路径使用.

$ target/universal/stage/bin/<project-name> -Dconfig.file=/full/path/to/conf/production.conf
Run Code Online (Sandbox Code Playgroud)

另一种方法(继承和覆盖application.conf)

包括application.confprod.conf,只是重写你需要为督促注意,您可以包括在另一个内部的配置,所以我通常做的是指定一个prod.conf这样的: -

include "application.conf"

key.to.override=blah
Run Code Online (Sandbox Code Playgroud)

然后指定prod.conf何时启动应用程序并application.conf自动包含在内.然后,您可以指定属性prod.conf,覆盖application.conf生产环境中的属性.

更多

并不是说你也可以使用系统属性和环境变量覆盖中的设置application.conf.我鼓励您花一些时间阅读文档以更全面地了解这些选项.