2014-12-30 4 views
7

Ich schrieb eine Aufgabe in Gradle, die eine Umgebungsvariable ergreift.Warum sind Umgebungsvariablen für Gradle (nur) immer null, wenn sie von IntelliJ IDEA ausgeführt werden?

task run(type:Exec) { 
    def SYS_ENV = System.getenv("SYSTEM_ENV") 
    // do something with SYS_ENV 
} 

Wenn ich diese Aufgabe mit ./gradlew :taskName laufen es ist alles in Ordnung, aber wenn ich die gleiche Aufgabe von IntelliJ IDEA laufen (mit der https://www.jetbrains.com/img/webhelp/run.png Taste oder von der gradle Panel) die env Variable kommt als null aus.

Ich versuchte, IntelliJ neu zu starten, ich versuchte auch die Invalidate Caches/Restart Option, aber nichts ändert sich.

Soll IntelliJ IDEA das Gradle-Skript nicht genauso ausführen, wie ich es vom Befehl ausführen lasse? Was kann ich tun, um eine env-Variable von Note abzurufen, damit das Skript beim Ausführen von IntelliJ nicht fehlschlägt?

EDIT: Ich habe eine Reihe von Studien, und ich könnte lanchctl setenv MY_PATH MY_VALUE arbeiten, aber es ist nicht dauerhaft, und setenv MY_PATH MY_VALUE zu /etc/lanchd.conf hinzufügen macht es nicht so.

+0

Welche OS Sie verwenden, und wo genau ist die SYSTEM_ENV Variable gesetzt? – yole

+0

Ich bin auf OSX Yosemite und ich setze die Variable in ~/.bash_profile – doplumi

+2

Ich glaube, das ist Ihr Problem. Umgebungsvariablen, die in * ~/.bash_profile * festgelegt sind, sind für GUI-Anwendungen nicht verfügbar. Siehe [diese Antwort] (http://stackoverflow.com/a/588442/957630) für weitere Informationen. –

Antwort

0

Eine relativ alte Frage, aber das folgende funktionierte für mich auf Yosemite (10.10) so hier zu antworten, falls andere das Problem haben.

Unterstützung für launchd.conf wurde in Yosemite entfernt. LaunchAgents können in OSX verwendet werden, um benutzerspezifische Prozesse zu starten. Sie können diese den launchctl Schritt in Ihrer Frage effektiv die Umgebungsvariable

  1. einen Benutzer Start-Agent erstellen persistierenden erneut ausführen, um Ihre Variablen zu setzen (die Umgebungsvariablen bearbeiten und die folgenden in einem Terminal-Fenster laufen)

    cat <<EOF> ~/Library/LaunchAgents/user.environment.plist 
    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
    <plist version="1.0"> 
        <dict> 
        <key>Label</key> 
        <string>user.environment</string> 
        <key>ProgramArguments</key> 
        <array> 
         <string>sh</string> 
         <string>-c</string> 
         <string>launchctl setenv MYPATH MY_VALUE</string> 
        </array> 
        <key>RunAtLoad</key> 
        <true/> 
        </dict> 
    </plist> 
    EOF 
    
  2. starten Sie Ihren mac

  3. Stellen Sie sicher, dass Sie alle geöffneten Anwendungen neu starten (zB IntelliJ). Nur ein Neustart war für mich nicht möglich, ich musste die Apps schließen und neu starten.

Referenzen: