2016-05-12 11 views
1

Ich benutze Play Framework mit Java, um eine Webanwendung zu entwickeln. Ich wollte eine Datei zur Laufzeit lesen und die Datei wurde in einen Ordner im Projekt aufgenommen. In der Produktionsumgebung ist der Ordner jedoch nicht verfügbar. Gibt es eine Möglichkeit, den Ordner zur Laufzeit verfügbar zu machen? Und speziell, gibt es eine Standardmethode, um ein solches Szenario zu bewältigen?Gibt es eine Standardmethode zum Lesen einer Datei in Play, die auch in der Produktionsumgebung funktioniert?

Ich ging durch die Frage "Wie liest man eine Datei in Play Framework 2.2.1? 1" Aber es gibt keine Erwähnung über das Problem in der Produktionsumgebung.

Antwort

7

Sie können für bestimmte Aufgaben einen anderen Speicherort als den dedizierten Ordner auswählen. Für ein Beispiel können Sie den Ordner/resources erstellen. Erstellen Sie keinen Ressourcenordner im Ordner "/ app", da es sich nur um einen Speicherort für Code handelt. Gleiches gilt für andere spezifische Ordner. Dann können Sie

import play.Play; 
    Play.application().getFile("relative_path_from_<Project_Root>); 

verwenden, um auf die Datei in Ihrem Code zuzugreifen.

Nur dies wird auf Dev-Umgebung perfekt funktionieren. Aber sobald Sie dies mit der Datei dist in Produktion setzen, wird es nicht funktionieren, da der gesamte Ressourcenordner, den Sie angelegt haben, nicht zum Verzeichnis hinzugefügt wird. Um dies zu tun, musst du explizit darum bitten, den Ordner/resources auch deinem dist hinzuzufügen. Für das, was müssen Sie zu Ihrem /build.sbt gehen zu tun und diese Zeilen

import com.typesafe.sbt.packager.MappingsHelper._ 
    mappings in Universal ++= directory(baseDirectory.value/"resources") 

Nun fügen Sie, wenn Sie Ihre dist nehmen und überprüfen, können Sie sehen es einen zusätzlichen Ordner ‚Ressourcen‘ in der dist hat. Dann wird es auch für die Produktionsumgebung funktionieren.

+0

Danke Supun. Das hat mein Problem perfekt gelöst. –

Verwandte Themen