Java/Spring

[Java] ProcessBuilder

SeungbeomKim 2024. 4. 2. 18:02

회사에서 Selenium Web UI Test를 담당하면서 테스트 격리를 위해 DB를 기존 초기 세팅된 상태로 초기화해야 하는 상황이 생겼습니다. 그래서 처음에는 RDB(MariaDB)와 NoSQL(Elasticsearch)을 세팅하는 docker-compose를 재실행하면 될 거라는 막연한 생각이었지만, 이는 시간이 많이 소모되기에 cmd창에서. sql 파일을 실행하는 방향으로 갔습니다. statement를 이용하여 sql을 실행하는 것도 가능하지만, DB 연결을 맺는 코드를 따로 작성해줘야 했기에 ProcessBuilder 클래스를 활용하게 되었습니다.

 

ProcessBuilder

  • 다른 외부 프로세스를 실행하거나 컨트롤러하는 것을 지원해 주는 Java class
  • 윈도우의 cmd, 리눅스의 sh를 이용하여 외부 커맨드 파일을 실행할 수 있습니다.
  • command(List<String>), command(...String): List<String>, String 타입 매개변수로 받아 실행할 커맨드를 지정
  • directory(File Directory): 커맨드를 실행할 경로 지정
  • start(): 커맨드를 실행

그러면 외부 커맨드를 실행한 결과는 어떻게 반환할까요?

 

실행하면서 발생하는 Console 출력을 getInputStream() 메서드를 통해 BufferReader 객체로 반환합니다. 

Java에서 외부 프로세스 (윈도우, 리눅스.)를 실행할 수 있는 ProcessBuilder에 대해 알아보았습니다.