我可以通过属性文件动态加载设置值吗?
我的意思是,而不是硬编码到build.sbt
name := "helloWorld"
使用
创建一些application.properties
文件
name=helloWorld
然后,在build.sbt
文件中,name := application.properties["name"]
(最后一个例子纯粹是原理图,但我希望这个想法很清楚)
答案 0 :(得分:13)
您可以创建一个设置键,其中包含从文件中读取的属性。
import java.util.Properties
val appProperties = settingKey[Properties]("The application properties")
appProperties := {
val prop = new Properties()
IO.load(prop, new File("application.properties"))
prop
}
name := appProperties.value.getProperty("name")
答案 1 :(得分:7)
在@ daniel-olszewski的答案中作弊。
在project/build.sbt
声明对Typesafe Config的依赖:
libraryDependencies += "com.typesafe" % "config" % "1.2.1"
使用Typesafe配置并设置设置build.sbt
加载属性:
import com.typesafe.config.{ConfigFactory, Config}
lazy val appProperties = settingKey[Config]("The application properties")
appProperties := {
ConfigFactory.load()
}
name := {
try {
appProperties.value.getString("name")
} catch {
case _: Exception => "<empty>"
}
}
您也可以定义def
来设置属性值。