this did help me在通过GroovyShell调用时调试Groovy脚本非常多。 但是,当脚本通过完全限定的文件名加载时(例如file:///home/user/x/src/main/groovy/package/File.groovy),这仍然有效。
当我使用
时URL url = Thread.currentThread().getContextClassLoader().getResource("src/main/groovy/package/File.groovy");
shell.parse(new File(url.toURI));
失败(预先设置启用了调试的CompilerConfiguration)。
因此,我的脚本驻留在类路径中并分配了包。它们同时执行(通过File直接和通过File + Classloader资源) - 但IDE调试仅在将其称为文件资源时才起作用(相对!所以使用“错误的”src / main / groovy / prefix。
仅供参考 - 以后脚本应该包含在JAR文件中,整个应用程序将作为WAR执行。
有关我可以尝试的任何提示吗?
谢谢和最诚挚的问候, 蒂莫
答案 0 :(得分:0)
所以,无论我尝试了什么(在文件,URL和URI之间 - 使用和不使用直接的Classloader)都至少在一个案例中失败了:
现在,我为这三种情况管理的唯一方法是直接使用GroovyCodeSource:
CompilerConfiguration cc = CompilerConfiguration.DEFAULT
cc.setDebug(true)
def shell = new GroovyShell(
Thread.currentThread().getContextClassLoader(),
binding,
cc
)
scriptUrl = Thread.currentThread().getContextClassLoader().getResource(it);
GroovyCodeSource gcs = new GroovyCodeSource(scriptUrl);
Script s = shell.parse(gcs);
s.run();