Groovy: evaluate code in another file

Another option in code reuse in Groovy.

println('before') evaluate(new File("tools.groovy")) println('after') println(answer) // 42 // println(pi) hi()
println("in tools") def hi() { println('hello') } answer = 42 def pi = 3.14

When we run groovy main.groovy

Using the def keyword to define a variable will make it inaccessible from the file that evaluated this code:

Caught: groovy.lang.MissingPropertyException: No such property: pi for class: main groovy.lang.MissingPropertyException: No such property: pi for class: main at main.run(main.groovy:7)

Probably for the same reason functions defined in the other file cannot be accessed from the evaluating file.

Caught: groovy.lang.MissingMethodException: No signature of method: main.hi() is applicable for argument types: () values: [] Possible solutions: is(java.lang.Object), wait(), run(), run(), any(), find() groovy.lang.MissingMethodException: No signature of method: main.hi() is applicable for argument types: () values: [] Possible solutions: is(java.lang.Object), wait(), run(), run(), any(), find() at main.run(main.groovy:9)

timestamp: 2019-04-09T11:30:01 tags:

  • evaluate