gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:55:18 26 4
gpt4 key购买 nike

我在 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不是这样。

最佳答案

一个相对较旧的问题,但以下内容在优胜美地(10.10)上对我有用,因此请在此处回答以防其他人遇到问题。

支持 launchd.conf在优胜美地被移除。可以在 OSX 中使用 LaunchAgents 来启动每个用户的进程。您可以使用这些来重新运行 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
  • 确保重新启动所有打开的应用程序(例如 IntelliJ)。只是重新启动对我不起作用,我需要关闭并重新启动应用程序。

  • 引用:
  • Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?
  • https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html
  • 关于intellij-idea - 从 IntelliJ IDEA 运行时,为什么环境变量对于 Gradle(仅)始终为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712600/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com