Это демонстрирует, как вы можете сделать это. Вставьте это в файл сценария Groovy и запустите его. Вы увидите первый вызов функции как обычно. Второй вызов не дает результатов. Наконец, последний шаг в main выводит результаты второго вызова, которые были перенаправлены в ByteArrayOutputStream.
Веселись!
void doSomething() {
println "i did something"
}
println "normal call\n---------------"
doSomething()
println ""
def buf = new ByteArrayOutputStream()
def newOut = new PrintStream(buf)
def saveOut = System.out
println "redirected call\n---------------"
System.out = newOut
doSomething()
System.out = saveOut
println ""
println "results of call\n---------------"
println buf.toString()