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

Sbt 如何从Java属性文件加载设置值?,sbt,Sbt,有没有办法从属性文件中动态加载设置值 我的意思是,不要硬编码到build.sbt name := "helloWorld" 有一些application.properties文件 name=helloWorld 然后,在build.sbt文件中,使用name:=application.properties[“name”] (最后一个示例纯粹是示意图,但我希望想法很清楚)您可以创建一个设置键,该键保存从文件读取的属性 import java.util.Properties val appPr

有没有办法从属性文件中动态加载设置值

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

name := "helloWorld"
有一些
application.properties
文件

name=helloWorld
然后,在
build.sbt
文件中,使用
name:=application.properties[“name”]

(最后一个示例纯粹是示意图,但我希望想法很清楚)

您可以创建一个设置键,该键保存从文件读取的属性

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")

在@daniel olszewski的回答上有点作弊

project/build.sbt
中声明依赖于:

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>"
  }
}
import com.typesafe.config.{ConfigFactory,config}
lazy val appProperties=settingKey[Config](“应用程序属性”)
appProperties:={
ConfigFactory.load()
}
姓名:={
试一试{
appProperties.value.getString(“名称”)
}抓住{
案例:异常=>“”
}
}

您可以定义一个
def
,它也可以从属性中设置值。

我尝试了这种方法,但很明显配置是空的。如果我在我的应用程序中也这样做,它就可以正常工作。
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>"
  }
}