看一下下面的片段。
这是我非常简单的应用程序:
object EchoServer extends App {
println(com.typesafe.config.ConfigFactory.load())
}
上面的代码执行预期的操作:显示从reference.conf获取的配置(可以在akka-actor.jar中找到)与env变量合并。
现在看看我的Build.scala:
import sbt._
import Keys._
import com.typesafe.config._
object Build extends Build {
println(com.typesafe.config.ConfigFactory.load())
lazy val XXXProject = Project(
id = "x-x-x",
base = file("."),
settings = Defaults.defaultSettings ++ Seq(
organization := "a.b.c",
version := "0.0.1",
scalaVersion := "2.10.4",
crossPaths := false
libraryDependencies ++= Seq (
"com.typesafe.akka" %% "akka-actor" % "2.3.2",
"com.typesafe" % "config" % "1.2.0"
)
)
)
}
此处,启动SBT后,还会显示配置,但它仅包含env变量。它没有解析reference.conf! 为什么?以及如何处理它?</ p>
我打算从SBT内部启动一个ActorSystem,这个问题对我来说是个主要障碍。
我可以做一个解决方法 - 将reference.conf复制到我的项目等,但我正在寻找更优雅的解决方案。
更多关于好奇的数据:
plugins.sbt:
libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.3.2"
libraryDependencies += "com.typesafe" % "config" % "1.2.0"
build.properties:
sbt.version=0.13.2
答案 0 :(得分:0)
所以,我发现我必须使用正确的类加载器(不是SBT提供的):
val classLoader = ActorSystem.getClass.getClassLoader
println(com.typesafe.config.ConfigFactory.load(classLoader))