从此answer中,我了解到,每个Groovy脚本都编译为扩展groovy.lang.Script
类的类
下面是在Jenkins编辑器中为Jenkins管道编写的测试groovy脚本。
node('worker_node'){
print "***1. DRY principle***"
def list1 = [1,2,3,4]
def list2 = [10,20,30,40]
def factor = 2
def applyFactor = {e -> e * factor}
print(list1.each(applyFactor))
print(list2.each(applyFactor))
print "***2. Higher order function***"
def foo = { value, f -> f(value *2) }
foo(3, {print "Value is $it"})
foo(3){
print "Value is $it"
}
}
如何编译该groovy脚本以查看生成的类(源代码)?
答案 0 :(得分:1)
生成的类是 bytecode ,而不是源代码。源代码是Groovy脚本。
如果要查看与等效Java源代码相似的内容,请像往常一样使用groovyc
编译脚本,然后使用Java反编译器生成Java源代码(this question's answers列出一些)。
这当然要遵守反编译代码的一般警告。高级信息在编译过程中会丢失。反编译器必须猜测一下,才能找到表示原始源中可能存在的最佳方法。例如,原始代码中的for
循环可能最终会反编译为while
循环。
答案 1 :(得分:1)
groovy是领域特定语言。 这不是一个普通的习惯。
但是,如果您删除node(){ }
,则您的情况似乎很古怪。
,您可以在groovyconsole
中运行它,或使用groovyc
编译为类
只需下载稳定的groovy二进制文件并将其解压缩即可。
如果您的计算机上装有Java7或Java8,则可以运行groovyconsole并在那里尝试代码。
使用Ctrl+T
,您可以看到为脚本生成的实际类代码。