从IntelliJ IDEA插件运行sbt build

时间:2017-05-22 09:44:14

标签: java intellij-idea

我开发了IntelliJ IDEA插件,它添加了一个按钮" Build my project"在主菜单中。当用户单击该按钮时,插件应该开始构建SBT项目并将SBT输出放到控制台,以便用户看到构建进度。要运行构建,我需要3个操作:

  1. cd到项目目录。
  2. 执行" sbt package"命令。
  3. 将命令输出到控制台。
  4. 这是我的代码:

    `

    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);
     }
    

    `

    问题在于,当我传递几个命令时,由"&&"到Runtime.exec(),我没有看到任何输出。 我尝试了另外几个命令:

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

    我仍然没有看到任何输出,所以问题不在于sbt命令。当我通过单个命令时,例如" PWD"或" ls"到Runtime.exec()方法,我成功地看到了命令输出。 所以,任何人都可以建议,如何运行这两个命令" cd"和" sbt package"来自IDEA插件并获得" sbt package"的输出命令?

1 个答案:

答案 0 :(得分:0)

使用    Process Builder Class执行命令列表

  

ProcessBuilder(列出<String>命令)

     

这构造了具有指定操作系统的进程构建器   程序和论点。

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