2014-12-30 14 views
7

Ho scritto un'attività in gradle che acquisisce una variabile di ambiente.Perché le variabili di ambiente sono sempre nulle a Gradle (solo) quando vengono eseguite da IntelliJ IDEA?

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

Se corro questo compito con ./gradlew :taskName è tutto bene, ma se ho eseguito la stessa operazione da IntelliJ IDEA, (con il tasto https://www.jetbrains.com/img/webhelp/run.png, o dal pannello Gradle) la variabile ENV esce come null.

Ho provato a riavviare IntelliJ, ho anche provato l'opzione Invalidate Caches/Restart, ma non cambia nulla.

Non IntelliJ IDEA dovrebbe eseguire lo script Gradle esattamente come lo eseguo dal comando? Cosa posso fare per prendere una variabile env da Grade in modo che lo script non fallisca quando viene eseguito il modulo IntelliJ?

EDIT: ho fatto un po 'di prove, e ho potuto fare lanchctl setenv MY_PATH MY_VALUE lavoro, ma non è permanente, e l'aggiunta di setenv MY_PATH MY_VALUE-/etc/lanchd.conf non lo rende così.

+0

Quale sistema operativo stai usando, e dove esattamente è la variabile stabilita SYSTEM_ENV? – yole

+0

Sono su OSX Yosemite e imposto la variabile in ~/.bash_profile – doplumi

+2

Credo che sia il tuo problema. Le variabili d'ambiente impostate in * ~/.bash_profile * non saranno disponibili per le applicazioni GUI. Vedi [questa risposta] (http://stackoverflow.com/a/588442/957630) per maggiori informazioni. –

risposta

0

Una domanda relativamente vecchia, ma le seguenti hanno funzionato per me su Yosemite (10.10), quindi rispondere qui nel caso in cui altri abbiano il problema.

Il supporto per launchd.conf è stato rimosso in Yosemite. LaunchAgents può essere utilizzato in OSX per avviare processi per utente. È possibile utilizzare questi per eseguire nuovamente il passo launchctl nella tua domanda persistere in modo efficace la variabile d'ambiente

  1. Creare un agente lancio all'utente di impostare le variabili (modificare le variabili di ambiente ed eseguire il seguente in una finestra di terminale)

    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. riavvio del Mac

  3. assicurarsi di riavviare tutte le applicazioni aperte (ad esempio IntelliJ). Il riavvio non ha funzionato per me, avevo bisogno di chiudere e riavviare le app.

Riferimenti:

Problemi correlati