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

时间:2016-12-06 15:02:51

标签: scala playframework playframework-2.0 sbt

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

  • Commons.conf
  • Application.conf进行开发
  • Production.conf生产

application.confproduction.conf都包含commons.conf

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

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

4 个答案:

答案 0 :(得分:8)

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

请注意,无论您是部署到Windows并使用.bat启动应用程序,还是使用.sh启动Linux,您通常都会按如下方式执行该文件: -

$ target/universal/stage/bin/<project-name>

以上内容将执行您的.bat文件(如果您使用的是Microsoft)。

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

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

如果您将application.conf放在conf内,那么您可以按如下方式指定: -

$ /path/to/bin/<project-name> -Dconfig.resource=production.conf

如果您的应用未附带application.conf(即您尚未将其放入conf,那么您需要使用指定完整路径。

$ target/universal/stage/bin/<project-name> -Dconfig.file=/full/path/to/conf/production.conf

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

application.conf中加入prod.conf,然后覆盖prod所需的内容 请注意,您可以在另一个中包含配置,因此我通常会指定prod.conf,如下所示: -

include "application.conf"

key.to.override=blah

然后在启动应用时指定prod.conf,系统会自动包含application.conf。然后,您可以在prod.conf中指定覆盖生产环境的application.conf中的属性。

更多

并非您也可以使用系统属性和环境变量覆盖application.conf中的设置。我建议您花一些时间阅读the docs以更全面地了解这些选项。

答案 1 :(得分:2)

你可以用两种方式做到:

  1. 如果您的包中包含配置文件:
  2. $ <path_to_your_executable_file> -Dconfig.resource=<name_of_your_conf_file>

    这将在应用程序类路径中搜索配置文件,并且在打包之前所有这些文件都应该在conf目录中。

    1. 如果您想提供一个未与应用程序打包的完全备用文件:
    2. $ <path_to_your_executable_file> -Dconfig.file=<path_to_your_conf_file>

      如果您查看zip文件的内容,您将看到binconf目录。 bin包含可执行文件,conf包含配置文件。请注意,配置文件是单独打包的。

答案 2 :(得分:0)

在Play Framework 2.5.x中,您可以使用sbt命令运行项目,指定配置文件:

$ sbt '; set javaOptions += "-Dconfig.file=conf/integration.conf"; run'

您可以启动测试:

$ sbt '; set javaOptions += "-Dconfig.file=conf/integration.conf"; test'

或使用testOnly

$ sbt '; set javaOptions += "-Dconfig.file=conf/integration.conf"; testOnly Integration*'

答案 3 :(得分:0)

如果您正在使用激活器,则使用:激活器运行-Dconfig.file = conf / auxiliary.conf

如果您正在使用sbt,则使用:sbt';设置javaOptions + =“ -Dconfig.file = conf / auxiliary.conf”;跑