Gibt es eine Möglichkeit, Systemeigenschaften in leinegen zu setzen?

8

Starten einer Lein-Aufgabe (eigentlich test , die standardmäßig mit dem Profil : test ausgeführt wird). Was ich tun möchte, ist mit dem Äquivalent von

zu beginnen
  

java -Dproperty1 = Wert -Dproperty2 = Wert2 Aufgabe

Es gibt einige Referenzen im Internet, die nahelegen, dass dies so funktionieren sollte:

project.clj:

%Vor%

Dies wird in meinem Testläufer ignoriert. Das Profil ist korrekt. Wenn ich einige tatsächliche jvm-Argumente einfüge (z. B. "-XX: + PrintGC"), funktioniert es einwandfrei. Scheint aber nicht die Systemeigenschaften aufzunehmen. Gibt es einen richtigen Weg, dies zu tun?

    
Steve B. 01.09.2015, 04:31
quelle

2 Antworten

2

Eine Antwort gefunden, für jeden anderen, der damit zu kämpfen hat:

Da ich die Umgebungseigenschaften injizieren musste bevor ich den Prozess gestartet habe, habe ich folgendes gemacht:

Fügen Sie das Shell -Plugin zu Ihrem project.clj:

hinzu

: Plugins [[lein-shell "0.4.1"]]

und fügen Sie dann Ihrem Profil eine Vorbereitungsaufgabe hinzu. Aber da ist eine Falte - du könntest denken, du könntest das tun:

%Vor%

Aber das funktioniert nicht, da die Shell den Exportbefehl nicht sieht - Sie erhalten "keine solche Datei", da es Teil von bash ist und es keine ausführbare Datei namens "export" gibt. Also habe ich ein Skript namens "setenv.sh" erstellt und das aus der Shell heraus ausgeführt:

%Vor%

Edit: Das geht eigentlich nicht, die Variablen werden nicht in den Subprozess übernommen. Habe es hier gelassen, weil es für jemanden nützlich sein könnte, wie es ist.

Bearbeiten: Eigentlich musste ein Shell-Skript erstellt werden, das den Export aufruft und dann lein ausführt. Definitiv nicht die eleganteste Lösung.

    
Steve B. 01.09.2015 16:29
quelle
1

Wir verwenden environ für genau diesen Zweck.

Sobald Sie das Plugin installiert haben, müssen Sie lediglich eine Datei .lein-env in Ihrem Projektstammverzeichnis erstellen, die eine Zuordnung von Umgebungsvariablen enthält, wie zB:

%Vor%

Dann können Sie in Ihrem Code Folgendes verwenden:

%Vor%

Damit kann ich zum Beispiel auf den Stub-Server im Test verweisen, aber das eigentliche Ding in der Produktion, da environ die Systemumgebungsvariablen verwendet, wenn kein .lein-env bereitgestellt wird.

Ich hoffe, das hilft.

    
leonardoborges 01.09.2015 04:40
quelle

Tags und Links