Что я хочу сделать, это вызвать maven из groovy script. Рассматриваемый groovy script используется как оболочка maven для создания проектов J2EE, загружая тег и вызывая maven на то, что было загружено. Как мне выполнить вызов maven для сборки/упаковки EAR (groovy script уже способен загружать тег из SCM).
Как сделать вызовы системной команды в Java/Groovy?
Ответ 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) Позднее вы можете получить результаты выполнения процесса (чтобы узнать, не сработало или нет).