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;
我是 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;