groovy 三种运用

1、groovyshell 脚本语言运用,支持表达式及脚本文件

def run(foo) {
       println 'Hello World!'
       x = 123
       foo * 10
}
run foo

 

public class Testgroovyshell {
 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   Binding binding = new Binding();
   binding.setProperty("foo",new Integer(2));
   groovyshell shell = new groovyshell(binding);
   
   Object value = shell.evaluate(new File("src/groovy/groovyshellHellow.groovy"));
   System.out.println(value);
  } catch (CompilationFailedException e) {
   e.printstacktrace();
  } catch (IOException e) {
   e.printstacktrace();
  }
    }
}

2、Java中动态加载和运行Groovy代码

  

package groovy;

/**
 * @author zhangchao02
 *
 */
public class talk{

 public String say(String talkContext) {
  System.out.println("my say:" + talkContext);
  return talkContext;
 }

}

public class Testgroovyshell {
 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   Binding binding = new Binding();
   binding.setProperty("foo",new Integer(2));
   groovyshell shell = new groovyshell(binding);
   
   Object value = shell.evaluate(new File("src/groovy/groovyshellHellow.groovy"));
   System.out.println(value);
  } catch (CompilationFailedException e) {
   e.printstacktrace();
  } catch (IOException e) {
   e.printstacktrace();
  }
    }
}

public class GroovyHelper {
    private static final Logger logger = LoggerFactory.getLogger(GroovyHelper.class);
 private static GroovyClassLoader loader;

 static {
  ClassLoader cl = new GroovyHelper().getClass()
    .getClassLoader();
  loader = new GroovyClassLoader(cl);
 }

 private GroovyHelper() {
 };

 public static GroovyObject getGroovyObject(String filePath) {
  File groovyFile = new File(filePath);
  if(!groovyFile.exists()){
   logger.error("GroovyHelper getGroovyObject groovyFile is not exists filePath={}",filePath);
   return null;
  }
  
  GroovyObject groovyObject = null;
  try {
   loader.parseClass(groovyFile);
   Class<?> groovyClass = loader.parseClass(groovyFile);
   groovyObject = (GroovyObject) groovyClass.newInstance();
  } catch (Exception e) {
   e.printstacktrace();
  }
  return groovyObject;
 }

 public static Object invokeMethod(GroovyObject groovyObject,
   String paramString,Object paramObject) {
  Object result = groovyObject.invokeMethod(paramString,paramObject);
  return result;
 }
 
 public static Object invokeMethodShell(){
  Object result = null;
  return result;
 }
}

3、groovy 脚本引擎:

 public static void main(String[] args) {   String[] roots  =   new  String[]  {"src/groovy/"} ;   try {    GroovyScriptEngine gse  =   new  GroovyScriptEngine(roots);    Binding binding = new Binding();    binding.setProperty("foo",new Integer(2));    gse.run( "groovyshellHellow.groovy",binding);    System.out.println(binding.getvariable("x"));    System.out.println(binding.getvariable("foo"));   } catch (IOException e) {    // Todo Auto-generated catch block    e.printstacktrace();   } catch (ResourceException e) {    // Todo Auto-generated catch block    e.printstacktrace();   } catch (ScriptException e) {    // Todo Auto-generated catch block    e.printstacktrace();   }  }

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...