как использовать execute () в Groovy для запуска любой команды - PullRequest
9 голосов
/ 11 марта 2010

Я обычно строю свой проект, используя эти две команды из командной строки (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 ]

14 голосов
/ 01 июня 2010

Или, точнее, я думаю, что решение binil должно читаться

"your command".execute(null, new File("/the/dir/which/you/want/to/run/it/from"))
5 голосов
/ 11 марта 2010

В соответствии с этим потоком (вторая часть), "cd c:".execute() пытается запустить программу с именем cd, которая является не программой, а встроенной командой оболочки.

Временное решение: изменить каталог, как показано ниже (не проверено):

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

4 голосов
/ 16 ноября 2012

Спасибо Ноэлю и Бинилу, у меня была похожая проблема со сборкой 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 голосов
/ 12 марта 2010
"your command".execute(null, /the/dir/which/you/want/to/run/it/from)

должен делать то, что вы хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...