我有一个应用程序,我使用喷雾罐建设。这是一个sbt项目,我有标准的sbt项目结构。我有一个application.dev.conf,application.test.conf和application.prod.conf。我现在想通过传递application.xxx.conf文件作为参数来启动我的喷雾罐服务器。我过去广泛使用过Play框架,我可以控制或者更确切地说将配置文件传递给play run命令。我现在怎么能用Spray做同样的事情?有什么建议吗?
我有以下内容:
val cfg = context.system.settings.config
这是在Spray中我的actor中获取application.conf文件的正确方法吗?
我试过这样做:
sbt "project simple-http-server" run -Dconfig.resource=production.conf
似乎运行后的任何内容都会被默默忽略。如何针对不同的配置发出run命令?
答案 0 :(得分:2)
您可以使用Typesafe's Config Library
只需定义依赖项:
libraryDependencies += "com.typesafe" % "config" % "1.3.0"
在您的应用中,您可以使用它来获取配置:
val conf = ConfigFactory.load()
默认情况下,它会在类路径中搜索名为application.{conf,json,properties}
的文件,但您可以在运行应用时使用-Dconfig.file
覆盖此文件。
如果您希望在SBT中使用此功能,则需要启用forking。 SBT通常不会分支新的JVM进程,因此您需要启用它并在build.sbt
中指定所需的JVM选项:
// fork a new JVM for 'run' and 'test:run'
fork in run := true
// set config file to production.conf
javaOptions in run += "-Dconfig.file=production.conf"
或者在命令行中动态设置它:
sbt '; set javaOptions += "-Dconfig.file=production.conf"; run'