我想知道如何在 dist
中启动打包的play v2.3.7应用程序(由 Prod
命令创建)和 Dev
模式。
我们使用 sbt dist
创建可分发工件,根据these instructions生成zip文件。我们将zip文件复制到它将运行的机器上,将其解压缩,然后根据that page上的说明启动它。但是,它始终会启动,以便 Play.isProd
评估为 true
。
在开发我们的应用程序时,我们可以使用 activator start
启动它,这会导致 Play.isProd
返回 true
,或 activator run
/ activator test
,导致 Play.isProd
返回 false
我们想知道是否有任何方法可以启动打包的应用程序并能够控制 Play.isProd
的状态,以便我们可以运行测试实例我们的测试服务器,以及我们的prod服务器上的prod实例。
我们目前的解决方法是在 application.conf
中设置自定义设置,并使用 Play.current.configuration.getBoolean("play_mode").getOrElse(true)
进行检查。我觉得我们应该使用内置功能。</ p>
答案 0 :(得分:1)
不确定我是否完全理解你的问题,但现在就去了。
我的自发建议是使用环境变量,因为这总是将配置与代码分离,并将特定配置绑定到计算机/环境。
但要回答你的问题:)
可以有一个额外的.conf文件,并设置一个在开始/运行时使用的文件:
activator start "-Dconfig.resource=dev.conf"
如果这是临时修复,则可以直接从命令行覆盖特定的配置键:
activator start "-Dapplication.some.conf=override -Ddb.default.password=some_pass"
// This might even work, not sure
activator start "-Dapplication.mode=DEV"
了解更多:
https://www.playframework.com/documentation/2.3.x/ProductionConfiguration
答案 1 :(得分:0)
似乎 isProd
标志意味着与我们假设完全不同的东西:它只控制应用程序是否运行或不运行类重载。换句话说,我们的&#34;解决方法&#34;实际上是获得我们想要的正确方法。
如果有人有更多要补充的话,我会暂时保持这种状态,但据我所知,现在可以关闭。