8

我在 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 并不能做到这一点。

4

1 回答 1

0

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

launchd.conf在优胜美地中删除了对的支持。LaunchAgents 可以在 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)。只是重新启动对我不起作用,我需要关闭并重新启动应用程序。

参考资料

于 2015-11-03T21:30:43.353 回答