有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从IntelliJ IDEA插件运行sbt构建

我开发了IntelliJ IDEA插件,它在主菜单中添加了一个按钮“构建我的项目”。当用户点击按钮时,插件应该启动SBT项目的构建,并将SBT输出放到控制台,这样用户就可以看到构建进度。要运行构建,我需要3个操作:

  1. cd到项目目录
  2. 执行“sbt包”命令
  3. 将命令输出打印到控制台

这是我的密码:

`

Runtime r = Runtime.getRuntime();
 Process p = r.exec("cd /project_dir && sbt package");
 InputStream is = p.getInputStream();
 BufferedReader br = new BufferedReader(new InputStreamReader(is));
 String line;
 while ((line = br.readLine()) != null){
    MyIdeaView.getInstance(project).getConsole().print(line);
 }

`

问题是,当我传递两个命令时,它们之间用“&;&;”分隔到运行时。exec(),我看不到任何输出。 我尝试了另外两个命令:

Process p = r.exec("cd /project_dir && pwd");

我仍然没有看到任何输出,所以问题不在sbt命令中。当我向运行时传递单个命令时,例如“pwd”或“ls”。方法,我成功地看到了命令输出。 那么,有谁能建议,如何从IDEA插件运行命令“cd”和“sbt-package”并获得“sbt-package”命令的输出


共 (1) 个答案

  1. # 1 楼答案

    使用 Process Builder Class来执行命令列表

    ProcessBuilder(List <String> command)

    This constructs a process builder with the specified operating system program and arguments.

    Builder processBuilder = new ProcessBuilder("cd /project_dir","sbt package");
    Process process = processBuilder.start();