【发布时间】:2015-10-20 17:27:15
【问题描述】:
我正在构建一个使用类型安全激活器的 Scala Play 2.4 应用程序。
我想运行我的测试 2 次,每次运行时使用不同的配置文件。
如何指定替代配置文件,或覆盖配置设置?
我目前使用命令“./activator test”运行测试
【问题讨论】:
标签: scala playframework configuration typesafe-activator playframework-2.4
我正在构建一个使用类型安全激活器的 Scala Play 2.4 应用程序。
我想运行我的测试 2 次,每次运行时使用不同的配置文件。
如何指定替代配置文件,或覆盖配置设置?
我目前使用命令“./activator test”运行测试
【问题讨论】:
标签: scala playframework configuration typesafe-activator playframework-2.4
您可以为不同的环境/目的创建不同的配置文件。例如,我有三个配置文件,分别用于本地测试、alpha 部署和生产部署,如本项目https://github.com/luongbalinh/play-mongo
您可以指定运行的配置如下:
激活器运行 -Dconfig.resource=application.conf
其中 application.conf 是您要使用的配置。
【讨论】:
您可以为不同的环境创建不同的配置文件。要指定配置以将其与激活器运行一起使用,请使用以下命令:
activator "run -Dconfig.resource=application.conf"
其中 application.conf 是所需的配置。没有引号,它对我不起作用。这使用的配置参数与您进入生产模式时使用的配置参数相同,如下所述: https://www.playframework.com/documentation/2.5.x/ProductionConfiguration#Specifying-an-alternate-configuration-file
同样重要的是 config.resource 会尝试在 conf/ 文件夹中定位配置,因此也无需指定。对于不在资源中的完整路径,请使用 config.file。进一步阅读也在上面的链接中。
需要使用引号,因为您不想将 -D 发送到激活器,而是发送到运行命令。使用引号,激活器的 JVM 没有 -D 参数,但它解释“run -Dconfig.file=application.conf”并相应地设置 config.file 属性,也在激活器的 JVM 中。
【讨论】:
由于以上所有内容都部分不正确,这是我上周末的辛苦知识。
include "application.conf" 不 include "application"(Akka 使用).conf,否则 Play 会默默地丢弃它们-Dconfig.file=<file>.conf,因此您不依赖于类路径/opt/configs/prod.conf)示例
这是我们运行的一个示例:
#prod.conf
include "application"
akka.remote.hostname = "prod.blah.com"
# Example of passing in S3 keys
s3.awsAccessKeyId="YOUR_KEY"
s3.awsSecretAccessKey="YOUR_SECRET_KEY"
然后像这样传递它:
activator -Dconfig.file=/var/lib/jenkins/jenkins.conf test
如果你喜欢 SBT:
sbt -Dconfig.file=/var/lib/jenkins/jenkins.conf test
开发环境
还请注意,创建developer.conf 文件也很容易,以保留所有密码/本地端口,然后设置.gitignore,这样开发人员就不会意外签入。
【讨论】:
以下命令适用于 Play 2.5
$ activator -Dconfig.resource=jenkins.conf run
https://www.playframework.com/documentation/2.5.x/ProductionConfiguration
【讨论】: