IntelliJ IDEA全局环境变量配置

Ben*_*Ben 13 intellij-idea environment-variables intellij-plugin

我需要在所有想法运行配置中使用envirnoment变量.我目前使用run - > edit configurations - > 然后在所选配置中输入env变量.然而,当我需要运行隔离的测试场景时,这非常繁琐,因为每个都创建了一个新的运行配置,我需要重新输入变量.

我试图用设置在我的Linux系统中的ENV变量export SOME_VAR="some value"在不同的会话配置文件:/etc/profile,/etc/bash.bashrc,~/.bashrc,~/.profile但似乎的IntelliJ忽略运行过程中的增值经销商,即使当我启动echo ${SOME_VAR}从的IntelliJ内置终端会显示正确的输出.

我使用也试过的IntelliJ .ENV文件的插件,然后设置SOME_VAR=some value.env项目的根文件.也没用.

Alm*_*pos 11

我找到了一个在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"));
    }
} 
Run Code Online (Sandbox Code Playgroud)

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

$ export MY_VAR="This is my adorable var :)"
$ idea
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

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

  1. 单击项目中的"选择运行/调试配置",然后选择"编辑配置":

在此输入图像描述

  1. 然后,单击"环境变量"部分右侧带"..."的按钮:

在此输入图像描述

  1. 你会看到一个弹出窗口.选中左下角的复选框,其中包含"包含父环境变量"标签:

在此输入图像描述

而已!!!

如果您现在运行程序,您将在控制台上看到类似的内容:

在此输入图像描述

您可以使用正确的值查看所有环境变量,当然还有"MY_VAR"变量!

超越基础

通常,出于安全原因,我们不希望保持所有环境变量可见.我们想要做的是只在IntelliJ(或我们的程序)运行时才使这些变量可见.

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

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

要做到这一点,有一些有用的程序(你可以谷歌他们),但我最喜欢的是env-cmd.

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

MY_TEST_VAR=I live in the test.env file.
Run Code Online (Sandbox Code Playgroud)

如果你通过这样做调用IntelliJ:

$ env-cmd test.env idea
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

在此输入图像描述

此时,我希望您能够使用自己的解决方案:创建内置变量的shell脚本,测试其他程序(direnv,autoenv等),等等.

请享用!

...

  • 您此处显示的运行配置特定于应用程序主类,但OP表示他不是在谈论主类,而是在谈论大量单元测试方法。其中每一个都会创建一个新的、单独的运行配置。 (3认同)

小智 11

在我看来,真正的问题是 Mat 所说的。如果你想从快捷方式启动 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
Run Code Online (Sandbox Code Playgroud)

  • 是的,这个答案应该是得票最多的。对于 Ubuntu 18.04 和 IntelliJ 2020.3,.desktop 文件位于 `.local/share/applications/jetbrains-idea-ce.desktop` (3认同)

zer*_*dth 8

我尝试了上面列出的各种方法,并将环境变量添加到终端配置中,并且 Maven 构建工具在某些上下文中起作用,但在其他上下文中不起作用。然后我终于在IntelliJ中找到了实际上。因为为什么只有一个环境变量配置屏幕,而您可以有多个环境变量配置屏幕,并且除了其中一个之外的所有屏幕都会出错?^_^

\n

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

\n

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

\n

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

\n

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

\n


k_o*_*_o_ 7

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


小智 5

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