Как сделать системные вызовы команд в Java / Groovy? - PullRequest
27 голосов
/ 23 апреля 2010

Что я хочу сделать, так это вызвать maven из отличного сценария. Рассматриваемый скрипт groovy используется в качестве оболочки maven для создания проектов J2EE путем загрузки тега и вызова maven для того, что было загружено. Как мне выполнить вызов maven для сборки / упаковки EAR (скрипт groovy уже способен загружать тег из SCM).

Ответы [ 4 ]

40 голосов
/ 24 апреля 2010

Самый простой способ вызвать внешний процесс в Groovy - это использовать команду execute () для строки. Например, чтобы выполнить maven из скрипта groovy, выполните следующее:

"cmd /c mvn".execute()

Если вы хотите зафиксировать вывод команды и, возможно, распечатать ее, вы можете сделать это:

print "cmd /c mvn".execute().text

cmd / c при запуске вызывает командную оболочку Windows. Так как mvn.bat - это пакетный скрипт, он вам нужен. Для Unix вы можете вызвать системную оболочку.

23 голосов
/ 13 августа 2014

Это так же просто, как сделать

"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());
4 голосов
/ 10 декабря 2013

Для Java 7+ перенаправление stdio:

new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
2 голосов
/ 24 апреля 2010

Вы можете использовать класс Runtime для запуска команды оболочки. посмотрите здесь: http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) Позже вы можете зафиксировать результаты выполнения Процесса (чтобы узнать, провалился он или нет).

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