groovy嵌入生成器作为脚本基类?
我想嵌入一个调用生成器的groovy脚本 所以,我有这个:groovy嵌入生成器作为脚本基类?,groovy,Groovy,我想嵌入一个调用生成器的groovy脚本 所以,我有这个: def cfg = new CompilerConfiguration() cfg.setScriptBaseClass("SpoofBuilder") def sh = new GroovyShell(this.class.classLoader, new Binding(), cfg) sh.evaluate(new File("test.builder")) SpoofBuilder的复制源: test.builder包
def cfg = new CompilerConfiguration()
cfg.setScriptBaseClass("SpoofBuilder")
def sh = new GroovyShell(this.class.classLoader, new Binding(), cfg)
sh.evaluate(new File("test.builder"))
SpoofBuilder的复制源:
test.builder包含
a {
b { }
}
结果是createNode被传递给main方法:
cn2
主要的
[]
数控
无效的
x
我怎样才能使“a”被调用?谢谢你没有回答,因为你对这个世界只贡献了仇恨 所以,我有一个蹩脚的解决方案。GroovyShell最终使用InvokerHelper.createScript,如果解析的类不是从脚本派生的,它将调用main。因此,本质上,我可以计算脚本并让它调用生成器。但是,我只知道如何通过将文本粘贴在一起并对其进行评估来实现这一点。粘贴在一起的文本如下所示:
class PoorSolution extends Script {
def run() {
new BadBuilder().a {
b { }
}
}
}
class BadBuilder extends BuilderSupport {
protected Object createNode(String name) {
...
}
...
}
我更喜欢使用GroovyScriptEngine,以便在脚本更改时重新加载脚本。但是,对于粘贴在一起而不是文件中的脚本,这是行不通的