如何在Java / Groovy中进行系统命令调用?

时间:2010-04-23 19:48:26

标签: command-line groovy build-automation

我想要做的是从一个groovy脚本调用maven。有问题的groovy脚本用作maven包装器,通过下载标签并在下载的内容上调用maven来构建J2EE项目。我应该如何完成调用maven来构建/打包EAR(groovy脚本已经能够从SCM下载标签)。

4 个答案:

答案 0 :(得分:39)

在Groovy中调用外部进程的最简单方法是对字符串使用execute()命令。例如,要从groovy脚本执行maven,请执行以下命令:

"cmd /c mvn".execute()

如果要捕获命令的输出并打印出来,可以执行以下操作:

print "cmd /c mvn".execute().text

开头的'cmd / c'调用Windows命令shell。由于mvn.bat是批处理脚本,因此您需要这样做。对于Unix,您可以调用系统shell。

答案 1 :(得分:23)

就像做

一样简单
"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());

答案 2 :(得分:4)

对于Java 7+ stdio重定向:

new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();

答案 3 :(得分:2)

您可以使用Runtime类来启动shell命令。看看这里:http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) 您可以稍后捕获流程执行的结果(以确定它是否失败)。