2013-02-06 11 views
10

Ich benutze playframework 2.1-RC2. Zuerst habe ich gesehen all thesimilarquestions, so folgte ich der gemeinsamen Anweisung zum Trennen der Datei application.conf pro Umgebung. So habe ich application.test.conf und ich laufen Tests auf diese Weise:Playframework-Einstellungen in Abhängigkeit von der Umgebung

play -Dconfig.file=./conf/application.test.conf "test" 

ich verschiedene Kombinationen ausprobiert, wie

play -Dconfig.file=./conf/application.test.conf ~test 

oder

play -Dconfig.file=conf/application.test.conf ~test 

Noch kein Glück, es gerade tut nicht abgeholt werden, sondern stattdessen eine (application.conf).

Von der anderen Seite, wenn ich

play -Dconfig.file=./conf/application.dev.conf "run" 

dann Anwendung tun wählt die richtige Konfiguration.

Wie kann ich die Testkonfigurationsdatei angeben?

Antwort

13

fand ich die robusteste Möglichkeit, dies in einer Cross-Plattform-kompatibel Weise zu specifiy ist es in der Build.scala direkt aufzunehmen:

val main = play.Project(appName, appVersion, appDependencies).settings(
    javaOptions in Test += "-Dconfig.file=conf/test.conf", 
    ... 
) 

Bonus: konfigurieren einmal und vergessen ;-)

+0

Mann du hast meinen Tag gemacht. Aber wie kommt es, dass das gleiche über die Konsole funktioniert nicht? .. – zapadlo

+0

Ich weiß nicht, welches Betriebssystem Sie ausführen, aber zumindest in Windows gibt es einen bekannten, aber niedrige Priorität Fehler, dass die Wiedergabe Parameter nicht übergeben die JVM korrekt (und dies ist ein JVM-Parameter, kein Play-Parameter). SBT macht besser ;-) – Leo

+2

Dies ist ein interessanter Ansatz, aber woher kommt das Keyword "Test"? Ist es möglich, dasselbe mit Umgebungen wie dev/preprod/prod ... zu tun? Danke – c4k

1

Ein anderer Ansatz besteht darin, die Methode auf GlobalSettings/Global mit dem Namen onLoadConfig zu überschreiben. Dadurch können Sie steuern, wo Ihre App nach Ihrer Konfiguration sucht.

Also in einer unserer Anwendung habe ich diese Einrichtung unten für meine Conf/Ordner.

Damit können Sie Vererbung wie Setup für die Konfiguration implementieren, haben Sie gemeinsame und 3 andere für bestimmte Umgebungsmodus.

Der Code in Ihrem onLoadConfig Methode sollte nur Hauptkonfiguration laden und korrekte Ausweichkonfiguration eingestellt für Ihre Umgebung dann wie unter der Konfigurationsinstanz zurück:

**return new Configuration(baseConfig.withFallback(envConfig));** 

Versuchen Sie, diese blog post for complete snippet des Codes überprüfen.

Ich hoffe, das hilft.

Verwandte Themen