ZT Process Executorライブラリは、Apache Commons Execの代替です。コマンドの実行、出力のキャプチャ、タイムアウトの設定、プログラムの終了ステータスの確認などの機能があります。
私はそれを少し使用しましたが、適切に設計され、かなり十分に文書化されていることがわかりました。
ドキュメントの例
コマンドを実行し、stderr をロガーに送り、出力を UTF8 文字列として返します。
String output = new ProcessExecutor().command("java", "-version")
.redirectError(Slf4jStream.of(getClass()).asInfo())
.readOutput(true).execute()
.outputUTF8();
そのドキュメントには、Commons Exec に対する次の利点が記載されています。
- ストリームの処理の改善
- ストリームへの読み取り/書き込み
- stderr を stdout にリダイレクトする
- タイムアウト処理の改善
- 終了コードのチェックの改善
- 改善された API
- 非常に複雑なユースケースのためのワンライナー
- プロセス出力を文字列に取得するための 1 つのライナー
- 利用可能なProcessオブジェクトへのアクセス
- 非同期プロセスのサポート ( Future )
- SLF4J APIによるロギングの改善
- 複数のプロセスのサポート