Подтвердить что ты не робот

Как сделать вызовы системной команды в Java/Groovy?

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

4b9b3361

Ответ 1

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

"cmd /c mvn".execute()

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

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

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

Ответ 2

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

"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());

Ответ 3

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

new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();

Ответ 4

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