IntelliJ插件 - 运行控制台命令

时间:2016-04-26 00:34:43

标签: java intellij-idea console intellij-plugin

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

我想调用当前项目根目录中的命令“gulp”。

我已经尝试过使用

Runtime.getRuntime().exec(commands);

使用“cd C:\ Users \ User \ MyProject”和“gulp”之类的命令,但它似乎没有那样工作,我想,如果插件API提供了一种更简单的方法。

非常感谢你。 :-)

3 个答案:

答案 0 :(得分:5)

我知道它有点晚了(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/

答案 1 :(得分:0)

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

插件API提供 OSProcessHandler 类(以及其他类,如 ProcessAdapter ),它可以帮助管理子进程,处理其输出等。

答案 2 :(得分:0)

 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;