我想要做的是从groovy脚本调用maven。有问题的groovy脚本被用作Maven包装来构建J2EE项目,方法是下载标签并调用下载的Maven。我应该如何完成调用maven来构建/打包EAR(groovy脚本已经能够从SCM下载标签)。如何在Java/Groovy中进行系统命令调用?
回答
在Groovy中调用外部进程的最简单方法是对字符串使用execute()命令。例如,从Groovy脚本执行的Maven运行:如果你想捕捉的命令的输出
"cmd /c mvn".execute()
,也许把它打印出来,你可以这样做:
print "cmd /c mvn".execute().text
的“ cmd/c'在开始时调用Windows命令shell。由于mvn.bat是一个批处理脚本,你需要这个。对于Unix,你可以调用系统shell。
您可以使用Runtime类来启动shell命令。看看这里:http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) 您可能以后捕获流程执行的结果(以查明它是否失败)。
对于Java 7+标准输入输出重定向:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
如果你传入一个args的'List',确保这些元素都是'String's而不是[GString](http://docs.groovy-lang.org/docs/latest/html/api/groovy/ lang/GString.html)与插值变量。另外,不要忘记'redirectError'。 – seanf 2017-11-23 01:35:12
如果你想在标准输出上执行的命令,你可以做
获取打印输出是因为这样做"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());
当我这样做def homeDir =“c:/ test/server”; def workDir =“$ {homeDir}/workDir”; def tempDir =“$ {workDir}/tmp”; println(homeDir); println(workDir); runShell(“cd c:”); // runShell(“mkdir -p $ {tempDir}”); void runShell(String s){ def execute = s.execute(); execute.waitForProcessOutput(System.out,System.err); def value = execute.exitValue(); if(val> 0){ throw new Exception(“Exit value:$ {value}”); } } 我收到如下错误:java.io.IOException:无法运行程序“cd”:CreateProcess error = 2,系统找不到指定的文件 – user641887 2016-11-01 23:27:11
- 1. 使用exec在新进程中执行系统命令
- 2. 在python中执行系统命令
- 3. 如何在java中进行系统暂停进行调试?
- 4. perl系统命令执行
- 5. Powershell调用命令和系统变量
- 6. Strace命令只显示系统调用
- 7. 轨如何从轨道运行系统命令命令安全
- 8. 如何在Chrome中使用命令行进行调试
- 9. 传递系统命令和命令行参数在Eclipse中
- 10. read_char系统调用不是在命令行SPIM工作正常
- 11. 如何让 '系统' 命令,在mysql的
- 12. 如何在JavaScript中运行系统命令?
- 13. 如何在系统,exec或shell_exec中运行多个命令?
- 14. 如何以异步方式在Perl中运行系统命令?
- 15. 如何在后台运行xcode中的系统命令
- 16. 如何在keymando中执行系统命令
- 17. 如何在java脚本中执行系统命令?
- 18. 如何在Qt中运行系统命令?
- 19. 正在进行系统调用
- 20. 使用系统命令运行RAILS_ENV = production
- 21. 使用“系统”调用C(Linux)的执行wget命令
- 22. 如何测试只调用系统命令的ruby方法?
- 23. 使用系统命令
- 24. MATLAB系统命令
- 25. 系统命令bash
- 26. 如何在Visual Studio中作为命令行进行调试?
- 27. 从Perl AGI调用FFMPEG未能执行系统命令
- 28. 如何在Ruby中使用多个操作系统的命令?
- 29. 如何在系统中使用终端命令()
- 30. Gnokii在Linux命令行中工作,但不在PHP系统命令中
酷!不知道你能做到这一点。 – armandino 2010-04-27 05:46:02
这对我来说是第一次。去掉了一段时间的流程“consumeProcessOutput()”路线,但没有骰子。 这将有助于确定Docker构建失败的原因。 – eversMcc 2017-03-01 11:58:21