如何在groovy中将输出重定向到stderr?

我正在寻找一种方法将groovy脚本中的输出重定向到stderr:

catch(Exception e) { println "Want this to go to stderr" } 

就在我的头顶,你不能做一些自我布线:

 def printErr = System.err.&println printErr("AHHH") 

但这有点手册

另一个相当紧凑的替代方案是:

 System.err << "Want this to go to stderr" 

或者您可以在脚本的顶部添加它

 def err = System.err ... err << "Want this to go to stderr" 

这就是我现在在我的groovy shell脚本中所做的事情

Groovy可以访问JRE:

 System.err.println "goes to stderr" 

虽然可能有更多Groovy风格的方式……

如果您只想要更短的类型,这里有两个选项。 首先,您可以将java.lang.System导入为您喜欢的任何内容,特别是像“sys”这样的更短的内容:

 import java.lang.System as sys sys.err.println("ERROR Will Robinson") 

其次,您可以将System.err流分配给变量,然后使用该变量作为System.err的别名,如:

 err = System.err err.println("ERROR again Will Robinson") 

这有一个可能的优点,即System.err的所有function都是可访问的,因此您不必单独连接每个function(例如err.print,err.println等)。

希望有一种标准的Groovy方式,因为特殊的重命名可能会让阅读代码的人感到困惑。