2013-08-29 8 views
12

muszę odnieść się do java.io.tmpdir w moim pliku application.confJak używać właściwości systemu do zastępowania elementów zastępczych w pliku konfiguracyjnym Typesafe?

wydrukowałem treść mojego config z

val c = ConfigFactory.load() 
System.err.println(c.root().render()) 

i to czyni go tak jak

# dev/application.conf: 1 
"myapp" : { 
    # dev/application.conf: 47 
    "db" : { 
     # dev/application.conf: 49 
     "driver" : "org.h2.Driver", 
     # dev/application.conf: 48 
     "url" : "jdbc:h2:file:${java.io.tmpdir}/db;DB_CLOSE_DELAY=-1" 
    } 
... 
} 
# system properties 
"java" : { 
    # system properties 
    "io" : { 
     # system properties 
     "tmpdir" : "/tmp" 
    }, 
.... 

Więc myślę, że odniesienie do przodu nie działa. Czy istnieje sposób na załadowanie moich opcji po właściwościach systemu, więc parser konfiguracji poprawnie zastąpi wartości?

+0

Zauważ, że 'ConfigFactory.parseFile' nie używa właściwości systemu, podczas gdy' ConfigFactory.load' działa. – Vadzim

Odpowiedz

16

Odsyłacze do przodu działają poprawnie; Wydaje mi się, że problem polega tylko na tym, że w cudzysłowie masz składnię ${}, więc nie ma ona specjalnego znaczenia. Spróbuj to tak:

url = "jdbc:h2:file:"${java.io.tmpdir}"/db;DB_CLOSE_DELAY=-1" 

(zauważ, że ${} rzeczy nie jest notowany)

W formacie HOCON, coś, co jest ważne JSON będą interpretowane jako to byłoby w JSON, więc podane ciągi na przykład nie ma w nich specjalnej składni, poza sekwencjami specjalnymi, które obsługuje JSON.

Powiązane problemy