【问题标题】:Force reload of environment variables in IntelliJ... without restarting?在 IntelliJ 中强制重新加载环境变量...而不重新启动?
【发布时间】:2013-11-03 02:58:14
【问题描述】:

标题说明了一切。

我已经修改了一个在我的 java 项目中使用的环境变量,例如,我的 pom.xml 中的这一行:

<url>${env.DB_CONNECTION_URL}</url>

要使此更改生效,我必须手动重新启动 IntelliJ。

有趣的是,我安装了一个 IntelliJ 插件来“重新启动”IntelliJ,它确实如此,但环境变量没有刷新。

有没有办法做到这一点,而无需重新启动?

【问题讨论】:

  • 也许这值得写一个插件?只是为了将环境变量刷新到当前的intellij会话中……关闭所有intellij窗口并重新启动真是太痛苦了。

标签: java maven intellij-idea


【解决方案1】:

如果您通过“JetBrains Toolbox”启动 IntelliJ,那么为了重新加载环境变量,您需要关闭它们(IntelliJ 和 Toolbox),启动工具箱,然后通过工具箱启动 IntelliJ。

【讨论】:

  • 能否详细说明如何关闭工具箱?
  • @vikingsteve RIGHT_CLICK 在系统托盘图标上,然后选择退出。
  • 我不知道工具箱的存在。感谢您的提醒! ... 如果 IntelliJ 是我使用的唯一 Jetbrains 产品,使用该工具箱有什么好处吗?
  • @vikingsteve 该工具箱将允许自动更新。
【解决方案2】:

不可能。一旦在 Windows 或 Unix 中启动进程,就无法从外部读取更新的环境变量。您只能更改进程内的环境变量。

这个 IntelliJ 插件可能不会完全重新启动应用程序,而是使用不同的类加载器。

【讨论】:

  • 好的,谢谢。最好有一个 IntelliJ 重启选项,它可能会产生一个新的操作系统进程并在其中重启 IntelliJ。但现在我明白了原因,我会接受手动重启:)
  • 可能会将其放入默认未启用的 Maven 配置文件中并在那里更改它可以简化测试过程...
  • 对于 Windows 10,命令提示符具有执行此操作的“refreshenv”命令,因此现在在技术上是可行的。
  • 如前所述,“您只能更改进程内的环境变量” - 因此您可以重新读取路径之类的环境并为您的进程更改它,例如您正在调试的程序,或者更改环境选项您开始了一些新进程,而不仅仅是在 Windows 10 中。
【解决方案3】:

有一种方法可以在不重新启动 IDE 的情况下通过在 IDE 中创建一个新的本地终端来完成这项工作。

  1. 在IDE终端点击右键
  2. 点击新建会话

这在 Pycharm 中对我有用,并且使用新路径重新加载了环境变量

【讨论】:

  • 这只会更新终端的环境变量,而不是 IntelliJ 本身。
【解决方案4】:

似乎 Intellij 缓存了这些验证,甚至重新启动。在我的情况下,在 Windows 上重新登录后,Vars 已刷新。不确定它在 Linux/Mac Os 上是否也一样,但我在 Windows 上通过访问 文件 -> 设置 -> 构建、执行、开发 -> 构建工具 -> Maven -> Runner。 然后单击环境变量文本框中的小文档图标。现在,当包括系统环境变量被勾选时,我可以修改相关变量,或者我可以添加一个到用户环境变量。 IntelliJ 立即使用它们而无需重新启动/重新加载/重新记录

喜欢这里

【讨论】:

    【解决方案5】:

    在 Intellij 启动后更新环境变量后,您将无法在 Intellij 中加载最新值。

    以下是我的解决方案 FYR:

    1. 退出 Intellij
    2. 打开一个新终端,确保有最新更新的环境变量
    3. 在命令行中从这个终端启动 Intellij,例如,idea
    4. 检查 Intellij 中的环境变量

    顺便说一句,要在 Maven 运行中使用 env var,请按照以下步骤操作:

    运行 -> 编辑配置... -> 你的 maven 运行 -> Runner -> 环境变量:-> 包括系统环境变量:

    祝你好运~

    【讨论】:

    • 问题具体说“无需重启”,所以你的解决方案其实不是解决方案
    【解决方案6】:

    在 Linux/UNIX 中,shell 可能可以通过以下方式获取配置文件: . /etc/profile 在不退出当前 shell 的情况下刷新 env。

    【讨论】:

    • 这行不通,因为 IntelliJ 在启动后不会获取对环境变量的任何更改。
    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2015-05-25
    相关资源
    最近更新 更多