2010-03-11 8 views
9

lo general construir mi proyecto el uso de estos dos comandos de línea de comandos (DoS)cómo utilizar ejecutar() en maravilloso para ejecutar cualquier comando

G:\> cd c: 
C:\> cd c:\my\directory\where\ant\exists 
C:\my\directory\where\ant\exists> ant -Mysystem 
... 
..... 
build successful 

¿Qué pasa si quiero hacer lo anterior desde el maravilloso lugar? maravilloso tiene execute() método, pero después no funciona para mí:

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

da error:

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) 

Respuesta

5

De acuerdo con esta thread (la segunda parte), "cd c:".execute() intenta ejecutar un programa llamado cd que es no es un programa sino un comando de shell incorporado.

La solución sería cambiar el directorio de la siguiente manera (no probado):

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

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

debe hacer lo que quería.

13

O más explícitamente, creo que la solución de Binil debe leer

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

Gracias Noel y Binil, he tenido un problema similar con un Maven build.

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

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