我需要在所有想法运行配置中使用envirnoment变量。我目前使用运行 - > 编辑配置 - > ,然后在所选配置中输入env变量。然而,当我需要运行隔离的测试场景时,这非常繁琐,因为每个都创建了一个新的运行配置,我需要重新输入变量。
我尝试在各种会话配置文件中使用export SOME_VAR="some value"
在我的linux系统中设置env变量:/etc/profile
,/etc/bash.bashrc
,~/.bashrc
,~/.profile
但是intellij似乎在运行期间忽略了这些变量,即使我从intellij内置终端启动echo ${SOME_VAR}
时它显示正确的输出。
我还尝试使用intellij .env file plugin,然后在项目根目录中的SOME_VAR=some value
文件中设置.env
。也没有工作。
答案 0 :(得分: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"));
}
}
该程序基本上加载所有环境变量,在控制台上显示它们,并尝试显示一个env变量。此外,它假定您在调用IntelliJ IDEA 之前创建了 MY_VAR env变量,方法如下:
$ export MY_VAR="This is my adorable var :)"
$ idea
请注意,我们在创建环境变量的同一终端(或会话或窗口)中调用IntelliJ IDEA。如果您创建变量并从图标中调用IDEA,则解决方案将无法工作,因为IDEA将创建自己的会话。
因此,如果在没有正确配置的情况下运行它,您将在控制台中获得一些内容:
请注意,您只有几个变量,并且MY_VAR为空。
就是这样!!!
如果您现在运行程序,您将在控制台上看到类似的内容:
您可以使用正确的值查看所有环境变量,当然还有“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脚本,测试其他程序(direnv,autoenv等),等等上。
享受!
...
答案 1 :(得分:3)
如果使用了Maven,则可以在 文件->设置->生成,执行,部署->生成工具-> Maven-> Runner 下配置项目特定的环境变量 这些都可以在任何Maven配置中重复使用。
答案 2 :(得分:0)
问题是,IntelliJ没有&#34;看到&#34;在.bashrc中设置的环境变量(也可以在CrazyCoders中找到答案)。启用IntelliJ导入这些变量的最简单方法是从bash启动它,例如输入intellij-idea-community。
答案 3 :(得分:0)
我认为真正的问题是马特所说的。
如果要从快捷方式启动IntelliJ,则必须对其进行一些编辑:
打开.desktop文件,并将fb.prestamosCollection
.orderBy("fechaPrestamo", "desc")
.get()
.then(val => {
if (!val.empty) {
// wrap loop in async function call iife so we can use await inside
(async () => {
for (var i = 0; i < val.docs.length; i++) {
const doc = val.docs[i];
myobject = doc.data();
myobject.id = doc.id;
// this will be synchronous now
let eqp = await fb.equiposCollection.doc(myobject.id).get();
console.log(eqp.id);
myarray.push(myobject)
}
})();
}
});
添加到启动命令的开头。该文件应如下所示:
/bin/bash -c -i
答案 4 :(得分:0)
我尝试了上面列出的各种方法,并将环境变量添加到终端配置中,并且Maven构建工具在某些情况下有效,但在其他情况下则无效。然后,我终于在IntelliJ中找到了实际上适用于运行时进程的位置。因为为什么只有一个环境变量配置屏幕,却可以使几个错误,而除了其中一个错误,又为什么呢? ^ _ ^
如果您编辑用于创建运行配置的模板,并将环境变量添加到模板,则应将它们包含在随后的所有运行配置中从该模板开始。
这对于JUnit模板特别有用,因为这意味着所有自定义环境变量都将被加载用于单元测试,而不管它们执行的范围(单个方法,整个测试类,整个模块)。 。但是通常,如果您首先编辑模板,那么之后创建的任何运行配置都会从模板继承环境变量。
从顶部菜单:运行→编辑配置... →展开模板树→(选择模板)< / em>→环境变量:→(输入以分号分隔的键/值对列表或使用输入小部件)
对于自动生成的JUnit配置,应该删除所有现有的配置,并让IntelliJ在运行时重新创建新的配置。每个都将使用更新的JUnit模板以及您的环境变量。
答案 5 :(得分:0)
对于 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
答案 6 :(得分:0)
这里没有其他答案提到它,
将您的环境变量添加到 /etc/environment ,然后注销并重新登录。 IntelliJ 肯定会选择它。