我想要做的是从一个groovy脚本调用maven。有问题的groovy脚本用作maven包装器,通过下载标签并在下载的内容上调用maven来构建J2EE项目。我应该如何完成调用maven来构建/打包EAR(groovy脚本已经能够从SCM下载标签)。
答案 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) 您可以稍后捕获流程执行的结果(以确定它是否失败)。