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包

我想嵌入一个调用生成器的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包含

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,以便在脚本更改时重新加载脚本。但是,对于粘贴在一起而不是文件中的脚本,这是行不通的