IntelliJ 插件 - 运行 控制台命令

IntelliJ Plugin - Run Console Command

我是 IntelliJ 插件开发的新手,想知道如何从我的插件中在命令行中执行命令。

我想在当前项目根目录下调用命令"gulp"。

我已经尝试使用

Runtime.getRuntime().exec(commands);

使用 "cd C:\Users\User\MyProject" 和 "gulp" 之类的命令,但它似乎无法正常工作,我想知道插件 API 是否提供了更简单的方法。

运行时 class 提供 exec(String[], String[], File) 方法,其中最后一个参数是正在启动的子进程的工作目录。

插件 API 提供 OSProcessHandler class(以及其他 class 类似 ProcessAdapter) 可以帮助管理子流程、处理其输出等

我知道它有点晚了(1 年后),但最近我在开发一个 IntelliJ 插件,我遇到了同样的问题,这就是我使用的,它工作得很好。

首先,我们需要创建一个我们需要执行的命令列表:

  ArrayList<String> cmds = new ArrayList<>();
  cmds.add("./gradlew");

然后

  GeneralCommandLine generalCommandLine = new GeneralCommandLine(cmds);
  generalCommandLine.setCharset(Charset.forName("UTF-8"));
  generalCommandLine.setWorkDirectory(project.getBasePath());

  ProcessHandler processHandler = new OSProcessHandler(generalCommandLine);
  processHandler.startNotify();

因此 generalCommandLine.setWorkDirectory 设置为项目目录,这相当于终端命令 cd path/to/dir/

 ProcessOutput result1 = ExecUtil.execAndGetOutput(generalCommandLine);

result1.getStdOut result1.getStdErr 有效

ScriptRunnerUtil.getProcessOutput(generalCommandLine, ScriptRunnerUtil.STDOUT_OUTPUT_KEY_FILTER, timeout);

两者都很好用 它们内置于 intellij

import com.intellij.execution.process.ScriptRunnerUtil;
import com.intellij.execution.util.ExecUtil;