play2 有选择地覆盖 application.conf 中运行任务的设置

Posted

技术标签:

【中文标题】play2 有选择地覆盖 application.conf 中运行任务的设置【英文标题】:play2 selectively override settings in application.conf for the run task 【发布时间】:2014-04-14 09:42:38 【问题描述】:

在生产 Play 项目中,您可以通过将另一个 application.conf 添加到类路径来选择性地覆盖设置。但是,这似乎不适用于开发运行任务。这将很有用,因此不同的开发人员可以在不影响版本化文件的情况下测试/使用不同的设置。

在使用 typesefe-config 的非 Play scala 项目中,您可以通过在 sbt 配置中添加额外的 application.conf 来做到这一点:

unmanagedClasspath in Runtime ++= sys.env.get("CUSTOM_CONFIG").map(ec=>Attributed.blank(file(ec))).toSeq

这样每个开发人员都可以拥有自己的覆盖。然而,根据sbt inspect,Play run 任务似乎并不尊重这一点,这取决于runtime:unamanagedClasspath 设置。

您当然可以完全替换 application.conf,但不能只覆盖几个条目。

有人知道怎么做吗?

【问题讨论】:

【参考方案1】:

创建一个新的配置文件:/my/local.conf

在该文件中:

include "application.conf"

my.custom.setting="hello"

第一行引用了类路径中的 application.conf。随后的行添加/覆盖设置。

你开始吧:

sbt -Dconfig.file=/my/local.conf ~run

【讨论】:

好的。这应该这样做。运行不尊重类路径仍然很奇怪。

以上是关于play2 有选择地覆盖 application.conf 中运行任务的设置的主要内容,如果未能解决你的问题,请参考以下文章

PLAY2.6-SCALA 数据的返回与保存

play2.0 + java + mysql5.0 错误太多

启动没有 DB 的 Java/Play2.5 REST API

play 2.6.3 在运行时从 application.conf 检测数据库,但在测试期间不检测

覆盖 Application.persistentDataPath 的问题

没有绑定 play.api.Application 的实现