groovyload

Load script from groovy script


File1.groovy

def method() {
   println "test"
}

File2.groovy

method()

I want to load/include the functions/methods from File1.groovy during runtime, equals to rubys/rake's load. They are in two different directories.


Solution

  • If you don't mind the code in file2 being in a with block, you can do:

    new GroovyShell().parse( new File( 'file1.groovy' ) ).with {
      method()
    }
    

    Another possible method would be to change file1.groovy to:

    class File1 {
      def method() {
        println "test"
      }
    }
    

    And then in file2.groovy you can use mixin to add the methods from file1

    def script = new GroovyScriptEngine( '.' ).with {
      loadScriptByName( 'file1.groovy' )
    } 
    this.metaClass.mixin script
    
    method()