Alternative configuration files sind in Play-Dokumentation ziemlich gut in Abschnitt Specifying alternative configuration file
abgedeckt.
Kurz gesagt - in application.conf
legen Sie die Standardkonfiguration Ihrer App, und zusätzlich müssen Sie zusätzliche Dateien für Ihre Umgebung (en) erstellen, dh. life.conf
, dev.conf
usw. In diesen Dateien müssen Sie zuerst application.conf
(die die gesamte Standardkonfiguration lesen) und nur Teile, die geändert werden müssen - dh. DB-Anmeldeinformationen, könnte es dev.conf
sein:
include "application.conf"
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:alternative-database-for-dev-testing"
db.default.user=developer
db.default.password="developerpass"
So schließlich Sie Ihre Anwendung starten (nach dist
) als
./start -Dconfig.resource=dev.conf
oder mit der Play-Konsole
play -Dconfig.resource=dev.conf run
Mehrere Tipps:
- Es ist eine gute Idee zu tun nicht Platzieren Sie Ihre 'Leben' DB-Anmeldeinformationen in Standard-
application.conf
Datei, wenn einige Entwickler werden vergessen, seine dev.conf
einzuschließen er wird die Produktion DB nicht beschädigen, stattdessen sollten Sie es in prod.conf
setzen.
- Auch diese zusätzlichen Konfigurationen sollten nicht in ein VCS-Repository (dh git) platziert werden - Erstellen sie direkt auf dem Zielrechner (und Ignorieren im Repository) geben Sie sicher, dass Personen, die die Life-Datenbank Anmeldeinformationen nicht wissen sollten Ich sehe es nicht.
- Es ist auch möglich, Remote-alternative Konfigurationsdatei zu verwenden, die nützlich sein kann, z. Wenn Sie mehrere Instanzen derselben App bereitstellen, z. auf mehreren Hosts in der Cloud.
- Jeder Entwickler kann eigene Konfigurationsdatei haben, dh
dev_aknuds1.conf
, dev_biesior.conf
etc, so dass Sie sie mit einem Muster dev_*.conf
in Repo ignorieren können.
- Schließlich können Sie nur einen Shell-Skript (Unix) oder Bitten-Datei (Windows) erstellen
run_dev.sh
mit gewählter Konfigurationsdatei wie start_dev.sh
, starten usw., so dass Sie -Dconfig.resource=...
jedes Mal
Ja, nicht schreiben müssen, aber es sagt nicht, wie man Konfigurationsdateivarianten erzeugt, was hier das Kernproblem ist. – aknuds1
Ist das nicht genau das, was Biesor dir gerade beschrieben hat? Include baut eine Konfigurationsdatei auf einer anderen auf und überschreibt nur die Einstellungen, die anders sein sollen. – johanandren
@johanandren Die Antwort wurde erweitert, seit ich das erste Mal kommentiert habe.Ich sehe jetzt auch, dass die "include" -Technik in der Dokumentation erwähnt wird; Es ist leicht zu erkennen, dass es mir jetzt bewusst ist. Ich wünschte, es wäre für jemanden, der neu ist, offensichtlicher. Alles in allem sieht das nach einer großartigen Lösung aus. – aknuds1