【问题标题】:Run sbt build from IntelliJ IDEA plugin从 IntelliJ IDEA 插件运行 sbt build
【发布时间】:2017-05-22 17:48:52
【问题描述】:

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

  1. cd 到项目目录。
  2. 执行“sbt package”命令。
  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);
 }

`

问题是,当我将几个以“&&”分隔的命令传递给 Runtime.exec() 时,我看不到任何输出。 我尝试了另外几个命令:

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

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

【问题讨论】:

    标签: java intellij-idea


    【解决方案1】:

    使用 Process Builder Class 执行命令列表

    ProcessBuilder(列出<String>命令)

    这会构造一个具有指定操作系统的进程构建器 程序和参数。

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

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 2014-04-03
      • 2014-09-26
      • 2015-01-12
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 2013-03-22
      相关资源
      最近更新 更多