1、静态编译,在java工程中直接写groovy的文件,然后可以在groovy的文件中引用java工程的类,这种方式能够有效的利用groovy自身的语言特性,例如闭察丛蚂包;
2、通过groovyShell类直接执行脚本,例如:
package groovy_dsl.shellimport groovy.lang.Binding
import groovy.lang.GroovyShell
public class GroovyShellEx {
public static void main(String[] args) {
Binding bind = new Binding()
bind.setVariable("name", "iamzhongyong")
bind.setVariable("age", "25")
GroovyShell shell = new GroovyShell(bind)
Object obj = shell.evaluate("str = name+agereturn str")
System.out.println(obj)
}
}
3、通过groovyScriptEngine执行文件或者脚本,例如:
package groovy_dsl.scriptimport groovy.util.GroovyScriptEngine
public class ScriptEngine {
public static void main(String[] args) throws Exception {
GroovyScriptEngine engine = new GroovyScriptEngine("")
Object obj = engine.run("src/main/java/groovy_dsl/script/script_test.groovy", "iamzhongyong")
System.out.println(obj)
}
}
4、通过GroovyClassLoader来执行,例如:
package groovy_dsl.classloaderimport groovy.lang.GroovyClassLoader
import groovy.lang.GroovyObject
import java.io.File
import java.io.IOException
public class GroovyClassLoaderEx {
public static void main(String[] args) throws Exception, IOException {
GroovyClassLoader loader = new GroovyClassLoader()
for(int i=0i<100i++){
败埋 Class<?> clazz = loader.parseClass(new File("src/main/java/groovy_dsl/classloader/UserDO.groovy"))
GroovyObject clazzObj = (GroovyObject)clazz.newInstance()
clazzObj.invokeMethod("setName", "iamzhongyong")
clazzObj.invokeMethod("setSex", "Boy")
clazzObj.invokeMethod("setAge", "26")
郑埋 System.out.println(clazzObj.invokeMethod("getAllInfo", null))
}
}
}
都没有groovy目录,sourceSets应该不需要指定吧,我最后参考了官网的groovy和java混合项目的目录路径,只要有groovy目录就可以了。不过还蠢顷梁是遇到点小问题,在build的时候,如果java类引用groovy类,会编译失败,乎颤似乎编带运译的顺序是先java,后groovy,编译的时候引用不到groovy的类
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)