2017-05-22 8 views
0

メインメニューの "Build my project"ボタンを追加するIntelliJ IDEAプラグインを開発します。ユーザーがボタンをクリックすると、プラグインはSBTプロジェクトのビルドを開始し、SBT出力をコンソールに入力して、ユーザーにビルドの進行状況を表示させる必要があります。ビルドを実行するには、3つのアクションが必要です:IntelliJ IDEAプラグインからsbtビルドを実行

  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"コマンドの出力を得る方法は誰にでもありますか?

答えて

0

使用 Process Builder Classコマンド

たProcessBuilder(一覧<String>コマンド)

のリストを実行するためにこれは、指定されたオペレーティングシステム プログラムと引数を持つプロセスビルダーを構築します。

Builder processBuilder = new ProcessBuilder("cd /project_dir","sbt package"); 
Process process = processBuilder.start(); 
関連する問題