如何从Java属性文件加载设置值?

时间:2014-09-04 12:42:45

标签: sbt

我可以通过属性文件动态加载设置值吗?

我的意思是,而不是硬编码到build.sbt

name := "helloWorld"

使用

创建一些application.properties文件
name=helloWorld

然后,在build.sbt文件中,name := application.properties["name"] (最后一个例子纯粹是原理图,但我希望这个想法很清楚)

2 个答案:

答案 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来设置属性值。