2014-07-23 4 views
1

Groovy 코드를 Java 코드에서 호출하는 방법을 알고 있지만 Groovy 스크립트 script.groovy을 실행하는 동안 varabies를 채울 Java 프로그램을 요청할 수 있습니까?자바 프로그램에서 Groovy 스크립트의 변수 채우기

// script.groovy 
import static org.mydomain.WiseJavaProgram.*; 
pleasePopulateMeWithVariables(); 
println numberOfLegs // 2 
// We didn't declare numberOfLegs in our sript, the Java program set it for us. 

은 내가 pleasePopulateMeWithVariables 방법으로 환경을 전달해야 어쩌면 script.groovy에 대한 생각,하지만 할 방법을 발견하지 않았습니다. 이것은 가능한가?

내가 그런 동작을 사용하고자하는 경우 : script.groovy과 자바 프로그램이 알고있는 그루비 스크립트의 정의되지 않은 수를 알고 있지만 그 중 script.groovy은 알 수 없으며 선언 된 내용을 추가하고 싶습니다. 그들에게 script.groovy. 기본적으로 이러한 추가 스크립트는 다양한 제품의 설명과 기능과 같은 데이터입니다. GroovyShell을 생성하고 데이터 스크립트를 평가 한 다음 script.groovy이라는 Java 프로그램을 실행하면 쉽게 알 수 있습니다.하지만 Java 프로그램이 아닌 script.groovy을 먼저 호출해야합니다. 그냥 평소와 같이

답변

1

, 단순히 this으로 script.groovy에서 사용할 내가 한 단계 답 -__-

은 "환경"내가 검색 한 것은 Script 개체 자체 뒤에 있던 질문을 묻고있다. 따라서 :

// script.groovy 
import static org.mydomain.WiseJavaProgram.*; 
populateWithVariables(this); 
println numberOfLegs // 2 

// WiseJavaProgram.java 
public class WiseJavaProgram { 
    public static void populateWithVariables(Script script) { 
    script.evaluate('numberOfLegs = 2'); 
    script.evaluate(new File("another.groovy")); 
    script.evaluate(new File("yetAnother.groovy")); 
    } 
} 
관련 문제