从IntelliJ IDEA运行时,为什么环境变量始终为空(仅)Gradle?

时间:2014-12-30 21:09:35

标签: intellij-idea gradle intellij-14

我在gradle中编写了一个抓取环境变量的任务。

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

如果我使用./gradlew :taskName运行此任务一切正常,但如果我从IntelliJ IDEA运行相同的任务,(使用https://www.jetbrains.com/img/webhelp/run.png按钮或从gradle面板运行)env变量出来为null

我尝试重新启动IntelliJ,我也尝试了Invalidate Caches/Restart选项,但没有任何改变。

IntelliJ IDEA是不是应该像我从命令中运行它一样运行Gradle脚本?如何从Grade中获取env变量,以便在运行IntelliJ形式时脚本不会失败?

编辑:我做了一系列试验,我可以让lanchctl setenv MY_PATH MY_VALUE工作,但这不是永久性的,将setenv MY_PATH MY_VALUE添加到/etc/lanchd.conf并不是这样。

1 个答案:

答案 0 :(得分:0)

一个相对古老的问题,但以下在优胜美地(10.10)上为我工作,所以在这里回答以防其他人有问题。

Yosemite删除了对launchd.conf的支持。 LaunchAgent可以在OSX中用于启动每个用户的进程。您可以使用这些来重新运行问题中的launchctl步骤,有效地保持环境变量

  1. 创建用户启动代理以设置变量(编辑环境变量并在终端窗口中运行以下内容)

    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. 重启你的mac

  3. 确保重新启动任何打开的应用程序(例如IntelliJ)。只是重新开始没有为我工作,我需要关闭并重新启动应用程序。
  4. 参考