2017-05-22 1 views
0

메인 메뉴에서 "Build my project"버튼을 추가하는 IntelliJ IDEA 플러그인을 개발합니다. 사용자가 버튼을 클릭하면 플러그인은 SBT 프로젝트의 빌드를 시작하고 콘솔에 SBT 출력을 넣어 사용자가 빌드 진행 상황을 볼 수 있도록해야합니다. 빌드를 실행하려면 다음 세 가지 조치가 필요합니다.IntelliJ IDEA 플러그인에서 sbt 빌드 실행

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

`

문제는 그 나는 (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(); 
관련 문제