我在gradle中编写了一个抓取环境变量的任务。
task run(type:Exec) {
def SYS_ENV = System.getenv("SYSTEM_ENV")
// do something with SYS_ENV
}
如果我使用./gradlew :taskName
运行此任务一切正常,但如果我从IntelliJ IDEA运行相同的任务,(使用按钮或从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
并不是这样。
答案 0 :(得分:0)
一个相对古老的问题,但以下在优胜美地(10.10)上为我工作,所以在这里回答以防其他人有问题。
Yosemite删除了对launchd.conf
的支持。 LaunchAgent可以在OSX中用于启动每个用户的进程。您可以使用这些来重新运行问题中的launchctl
步骤,有效地保持环境变量
创建用户启动代理以设置变量(编辑环境变量并在终端窗口中运行以下内容)
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
重启你的mac
参考: