J'essaie de déboguer un script Groovy dans Eclipse à partir d'un test JUnit. Le code Groovy fait partie d'une application Java plus grande qui s'exécute dans Tomcat. Pour diverses raisons, notre système est configuré pour utiliser des expressions JSR223 compilées. Voici l'extrait de code abrégé:Débogage d'un script Groovy compilé dans Eclipse
GroovyScriptEngineImpl engine = new GroovyScriptEngineImpl();
Resource r =
new ClassPathResource("groovy/transformations/input/Foo.groovy");
String expression = IOUtils.toString(r.getInputStream());
CompiledScript script = engine.compile(expression);
String result = (String) script.eval(new SimpleBindings(bindings));
Le test fonctionne bien, mais même si j'ai un point d'arrêt défini dans Foo.groovy, et le fichier est sur le chemin de classe, le point d'arrêt ne se fait frapper lors du débogage. Je suppose que cela ne fonctionne pas car il n'y a aucune association entre l'expression au format String et le fichier réel qui le contient. Donc existe-t-il un moyen de créer cette association entre la chaîne et son nom de fichier correspondant? Comme mentionné, j'ai besoin d'utiliser un CompiledScript. Comme une note de côté, je suis en mesure de frapper le point d'arrêt dans le débogueur avec le même script Groovy lors de l'utilisation de cette approche:
Resource r =
new ClassPathResource("groovy/transformations/input/Foo.groovy");
GroovyShell shell = new GroovyShell(new Binding(bindings));
String str = (String) shell.evaluate(r.getFile());
Mais bien sûr, dans ce cas, le moteur Groovy charge le fichier directement. Tous les conseils sur la façon de faire fonctionner le premier exemple sont grandement appréciés. Merci.
J'ai oublié de mentionner que j'ai activé l'option "Activer le support du dossier de script" dans les paramètres du compilateur Groovy dans Eclipse. – user2337270