2014-09-04 45 views
7

有没有办法让我从属性文件动态加载设置值?如何从Java属性文件加载设置值?

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

name := "helloWorld" 

有一些application.properties文件,

name=helloWorld 

,然后在build.sbt文件,有name := application.properties["name"] (最后一个例子是纯示意性的,但我希望这个想法很清楚)

回答

11

你可以创建一个设置键wh它拥有从文件中读取的属性。

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

从@ daniel-olszewski回答了一下。

在上Typesafe Configproject/build.sbt声明依赖性:使用类型安全配置

libraryDependencies += "com.typesafe" % "config" % "1.2.1" 

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会从属性设置值,也。

相关问题