2014-09-04 10 views
7

Gibt es eine Möglichkeit für mich, einen Einstellungswert dynamisch aus einer Eigenschaftendatei zu laden?Wie werden Einstellungswerte aus einer Java-Eigenschaftendatei geladen?

Ich meine, statt hartzucodieren in build.sbt

name := "helloWorld" 

Haben Sie etwas application.properties Datei mit

name=helloWorld 

Und dann, in der build.sbt Datei, haben name := application.properties["name"] (letztes Beispiel rein schematisch ist, aber Ich hoffe die Idee war klar)

Antwort

11

Sie können einen Einstellungsschlüssel wh erstellen Ich hält Eigenschaften aus einer Datei gelesen.

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

Betrügen ein bisschen auf die Antwort von @ daniel-olszewski.

In project/build.sbt declare Abhängigkeit von Typesafe Config:

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

In build.sbt Lasteigenschaften Typsichere Config und legen Einstellungen:

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

Sie könnten eine def definieren, die Werte aus den Eigenschaften festgelegt würden, zu .

Verwandte Themen