【问题标题】:IntelliJ IDEA global environment variable configurationIntelliJ IDEA 全局环境变量配置
【发布时间】:2018-01-23 13:44:03
【问题描述】:

我需要在我的所有想法运行配置中使用环境变量。我目前使用运行->编辑配置->然后在所选配置中输入环境变量。但是,当我需要运行独立的测试场景时,这非常乏味,因为每个场景都会创建一个新的运行配置,并且我需要重新输入变量。

我尝试在我的 linux 系统中使用 export SOME_VAR="some value" 在各种会话配置文件中设置环境变量:/etc/profile,/etc/bash.bashrc,~/.bashrc,~/.profile 但 intellij 似乎在运行期间忽略了这些变量,甚至虽然当我从 intellij 内置终端启动 echo ${SOME_VAR} 时,它会显示正确的输出。

我也尝试使用intellij .env file plugin,然后在项目根目录的.env 文件中设置SOME_VAR=some value。也没有用。

【问题讨论】:

  • 您是否尝试编辑 Default 节点下的配置,以便此设置自动应用于您以后创建的所有此类新运行/调试配置?
  • 我注意到 IntelliJ 支持 /etc/environment 配置文件...
  • 请参阅youtrack.jetbrains.com/issue/IDEABKL-7589,了解 IntelliJ IDEA 可以在 Linux 上加载哪些环境。

标签: intellij-idea environment-variables intellij-plugin


【解决方案1】:

我找到了另一个棘手的解决方案 :)
至少对于 Linux 用户来说...

只需在包含此内容的任何合适位置创建一些 shell 脚本,例如 idea.sh

#!/bin/bash
导出 YOUR_ENV_VARIABLE=某个值
cd ~/path_to_your_idea_folder/bin
重击 ./idea.sh

使该脚本可执行并运行它。
该脚本将始终使用预定义的环境变量运行您的 IDE。

【讨论】:

    【解决方案2】:

    因为这里没有其他答案提到它,

    将您的环境变量添加到 /etc/environment ,然后注销并再次登录。 IntelliJ 肯定会选择它。

    【讨论】:

      【解决方案3】:

      对于 macOS,请尝试添加 /Applications/IntelliJ IDEA.app/Contents/bin/idea.properties

      ...
      apple.awt.graphics.UseQuartz=true
      apple.awt.fullscreencapturealldisplays=false
      idea.jre.check=true
      SOME_VAR=some value
      

      【讨论】:

        【解决方案4】:

        我尝试了上面列出的各种方法,并将环境变量添加到终端配置和 Maven 构建工具在某些情况下有效,但在其他情况下无效。然后我终于在 IntelliJ 中找到了 实际上 适用于运行时进程的地方。因为当您可以拥有多个环境变量配置屏幕并且除了其中一个之外都出错时,为什么只有一个环境变量配置屏幕? ^_^

        如果您编辑创建运行配置的模板,并将环境变量添加到模板,那么它们应该包含在每个后续运行配置中从那个模板开始。

        这对于 JUnit 模板特别有用,因为这意味着您的所有自定义环境变量都将被加载用于单元测试,而不管它们的执行范围如何(单个方法、整个测试类、整个模块) .但一般来说,如果您先编辑模板,那么您之后创建的任何运行配置都会从模板继承您的环境变量。

        从顶部菜单:运行编辑配置... → 展开 模板 树 → (选择模板) → 环境变量:(输入分号分隔的键值对列表或使用输入小部件)

        对于自动生成的 JUnit 配置,您应该清除所有现有配置,并让 IntelliJ 随时重新创建新配置;其中每一个都将使用更新后的 JUnit 模板和您的环境变量。

        【讨论】:

        • 这应该是最佳答案。谢谢!
        【解决方案5】:

        如果使用 Maven,项目特定的环境变量可以在 File->Settings->Build, Execution, Deployment->Build Tools->Maven->Runner 下配置 然后在任何 Maven 配置中重用它们。

        设置环境变量的相同机制也可能适用于不同的跑步者。

        【讨论】:

        • 这对我有用,因为我不想让我只用于一个项目的变量污染我的系统环境
        • 这仅适用于 maven 执行(通过 IDE) - 如果您直接通过 IDE 运行代码,则需要其他内容。
        • 这对我不起作用,直到我把它放在 Spring Boot Run/Debug 配置中。
        • @Servietsky:Spring Run/Debug 配置与 Maven 有关系吗?由于答案是指 Maven,我想知道使用不同的跑步者时的期望是什么。如果 IntelliJ 运行器对不同的运行器有类似的 UI,那么适用于 Maven 设置的方法也可能对其他运行器有益。如果是这种情况,我会添加此注释。
        • 我的项目使用 Maven,据我所知,命令mvn spring-boot:run 用于启动基于 Maven 的 spring 项目。我想提一下,在 Spring 上使用全局(Runner)Maven 环境变量并没有为我工作。但也许Spring Boot 配置模板使用了我不知道的其他机制,它可能会直接使用Maven spring-boot:run
        【解决方案6】:

        在我看来,真正的问题是马特所说的。 如果要从快捷方式启动 IntelliJ,则必须对其进行一些编辑: 打开 .desktop 文件,并将/bin/bash -c -i 添加到启动命令的开头。该文件应如下所示:

        [Desktop Entry]
        Exec=/bin/bash -i -c "/path/to/idea/bin/idea.sh" %f
        Name=IntelliJ IDEA Ultimate
        Type=Application
        Version=1.0
        

        【讨论】:

        • 这是对我有用的最简单的解决方案。就我而言,它适用于 Goland: Exec=bash -i -c "/home/flapjack/.local/share/JetBrains/Toolbox/apps/Goland/ch-0/202.6948.9/bin/goland.sh" %f
        • 这应该是投票最多的答案......它很简单,而且很有效
        • 是的,这个答案应该是投票最多的。对于 Ubuntu 18.04 和 IntelliJ 2020.3,.desktop 文件位于 .local/share/applications/jetbrains-idea-ce.desktop
        【解决方案7】:

        我找到了一个在 IntelliJ 上设置环境变量的解决方案,它对我来说效果很好,而且非常简单。让我给你看看。

        这是我们用来测试的程序(你可以复制粘贴):

        package com.javasd.intelijenv;
        
        import java.util.Map;
        
        public class Main {
            public static void main(String[] args) {
                Map<String, String> env = System.getenv();
                for (String envName : env.keySet()) {
                    System.out.format("%s=%s%n", envName, env.get(envName));
                }
        
                System.out.println("My home directory: " + System.getenv("MY_VAR"));
            }
        } 
        

        这个程序基本上会加载所有环境变量,在控制台上显示它们,并尝试显示一个环境变量。此外,它假定您在调用 IntelliJ IDEA 之前已经创建了 MY_VAR 环境变量,方法如下:

        $ export MY_VAR="This is my adorable var :)"
        $ idea
        

        请注意,我们在创建环境变量的同一终端(或会话或窗口)中调用 IntelliJ IDEA。如果您创建变量并从图标调用 IDEA,则该解决方案将不起作用,因为 IDEA 将创建自己的会话。

        因此,如果在没有正确配置的情况下运行它,您将在控制台中看到以下内容:

        请注意,您只有几个变量,并且 MY_VAR 为空。

        这是我用来加载环境变量的配置:

        1. 在您的项目中点击“Select Run/Debug Configurations”并选择“Edit Configurations”:

        1. 然后,点击“环境变量”部分右侧带有“...”的按钮:

        1. 您会看到一个弹出窗口。选中左下角带有“包含父环境变量”标签的复选框:

        就是这样!!!

        如果你现在运行你的程序,你会在控制台上看到类似这样的东西:

        您可以看到所有的环境变量,当然还有您的“MY_VAR”变量,并且具有正确的值!

        超越基础

        通常,出于安全原因,我们不想让所有环境变量都可见。我们要做的是让这些变量仅在 IntelliJ(或我们的程序)运行时可见。

        因此,在调用 Intellij 之前或关闭它之后,环境中都不应显示敏感变量。

        此外,出于安全原因,您希望将这些变量保存在文件中(通常带有 .env 扩展名),以便于操作。

        为了实现这一点,有一些有用的程序(你可以谷歌它们),但我最喜欢的是env-cmd

        假设您有一个包含以下内容的 test.env 文件:

        MY_TEST_VAR=I live in the test.env file.
        

        如果你这样做调用 IntelliJ:

        $ env-cmd test.env idea
        

        编辑您的程序以显示“MY_TEST_VAR”,然后运行它,您将在 IntelliJ 的控制台上看到:

        但是如果你退出 IntelliJ,并寻找你的变量,你会发现 var 不存在(你可以使用env 来确认):

        此时,我希望您能够尝试自己的解决方案:创建带有变量的 shell 脚本,测试其他程序(direnvautoenv 等)等等。

        享受吧!

        ...

        【讨论】:

        • 您这里显示的运行配置是特定于应用程序主类的,但是OP说他不是在谈论主类,而是在谈论大量的单元测试方法。其中每一个都将创建一个新的、单独的运行配置。
        • 就像之前的评论中解释的那样,这并不能回答所提出的问题。幸运的是,其他一些答案有效 - 对于阅读此评论的任何人,也请查看其他答案。对我来说,answer about runtime configuration templates 是救命稻草。
        【解决方案8】:

        问题是,IntelliJ 没有“看到”在 .bashrc 中设置的环境变量(也可以在 CrazyCoders 的答案中找到)。启用 IntelliJ 导入这些变量的最简单方法是从 bash 启动它,例如通过输入 intellij-idea-community。

        【讨论】:

        • 在 RHEL 7.x 上运行,这就是问题所在。 Gnome 不会在 bash shell 中运行应用程序,因此从菜单启动 IDE 会导致此问题。
        猜你喜欢
        • 2014-06-28
        • 2012-11-24
        • 2017-07-03
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 2016-03-31
        • 1970-01-01
        相关资源
        最近更新 更多