私がやりたいのは、グルーヴィーなスクリプトからmavenを呼び出すことです。問題のgroovyスクリプトは、タグをダウンロードして、ダウンロードされたものに対してMavenを呼び出すことにより、J2EEプロジェクトを構築するためのMavenラッパーとして使用されます。 EARをビルド/パッケージ化するためにmavenを呼び出すにはどうすればよいですか(groovyスクリプトはすでにSCMからタグをダウンロードできます)。
Groovyで外部プロセスを呼び出す最も簡単な方法は、文字列に対してexecute()コマンドを使用することです。たとえば、groovyスクリプトからmavenを実行するには、次のコマンドを実行します。
"cmd /c mvn".execute()
コマンドの出力をキャプチャして、おそらく出力したい場合は、次のようにできます。
print "cmd /c mvn".execute().text
最初の「cmd/c」は、Windowsコマンドシェルを呼び出します。 mvn.batはバッチスクリプトなので、これが必要です。 Unixの場合、システムシェルを呼び出すことができます。
するのと同じくらい簡単です
"yourCommand".execute();
実行されたコマンドの印刷出力を標準出力で取得したい場合は、
def proc = "yourCommand".execute();
proc.waitForProcessOutput(System.out, System.err);
あなたが行うことができる出力を保存して処理したい場合
def proc = "yourCommand".execute();
def outputStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, System.err);
println(outputStream.toString());
Java 7+ stdio redirectionの場合:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
ランタイムコマンドを使用してシェルコマンドを起動できます。ここを見てください: http://Java.Sun.com/javase/6/docs/api/Java/lang/Runtime.html#exec(Java.lang.String) 後でキャプチャすることができますプロセス実行の結果(失敗したかどうかを確認するため)。