如何在groovy中使用execute()来运行任何命令

时间:2010-03-11 18:29:34

标签: ant groovy

我通常使用命令行(dos)

中的这两个命令构建我的项目
G:\> cd c:
C:\> cd c:\my\directory\where\ant\exists
C:\my\directory\where\ant\exists> ant -Mysystem
...
.....
build successful

如果我想从groovy做上述操作怎么办? groovy有execute()方法,但以下对我不起作用:

def cd_command = "cd c:"
def proc = cd_command.execute()
proc.waitFor()

它给出错误:

Caught: java.io.IOException: Cannot run program "cd": CreateProcess error=2, The
 system cannot find the file specified
        at ant_groovy.run(ant_groovy.groovy:2)

4 个答案:

答案 0 :(得分:14)

或者更明确地说,我认为binil的解决方案应该是

"your command".execute(null, new File("/the/dir/which/you/want/to/run/it/from"))

答案 1 :(得分:5)

根据此thread(第2部分),"cd c:".execute()尝试运行名为cd的程序,该程序不是程序,而是内置shell命令。

解决方法是更改​​目录,如下所示(未测试):

System.setProperty("user.dir", "c:")

答案 2 :(得分:4)

感谢Noel和Binil,我在构建Maven时遇到了类似的问题。

projects = ["alpha", "beta", "gamma"]

projects.each{ project ->
    println "*********************************************"
    println "now compiling project " + project
    println "cmd /c mvn compile".execute(null, new File(project)).text
}

答案 3 :(得分:3)

"your command".execute(null, /the/dir/which/you/want/to/run/it/from)

应该做你想做的事。