2013-01-10 2 views
4

내 ANT 스크립트에서 가끔 tasks runnning javascript with Rhino이라고 씁니다.ANT 자바 스크립트 작업에 매개 변수를 전달 하시겠습니까?

그러나 나는 이러한 작업에 매개 변수를 전달하는 방법을 놓치고 있습니다. 어떤 아이디어?

예를 들어 ... 여기에 이러한 작업의 예입니다

<script language="javascript"> <![CDATA[ 
//some nonsense to fake out rhino into thinking we've a dom, etc. 
this.document = { "fake":true }; 
this.window = new Object(); 
this.head = new Object(); 
eval(''+new String(org.apache.tools.ant.util.FileUtils.readFully(new java.io.FileReader('coolJavascript.js')))); 

//... do some stuff 

var s = java.io.File.separator; 
var fstream = new java.io.FileWriter(".." + s + "build" + s + "web" + s + "js" + s + "coolChangedJavascript.js"); 
var out = new java.io.BufferedWriter(fstream); 
out.write(jsCode); 
out.close(); 
]]> </script> 

답변

2

두 제안이 마음에 와서. 첫째, 자바 스크립트 내에서 Ant 속성에 액세스 할 수 있습니다.

var x = project.getProperty("my.property"); 

는 XML에 설정된 속성 값을 얻기 위해 스크립트에서 사용할 수 있습니다 아마도 다음과 같이 : 당신은 참조 설명서의 예제가 있습니다

<property name="my.property" value="x" /> 

둘째, 당신은 수도 scriptdef을 사용하면 자바 스크립트에서 쉽게 액세스 할 수있는 특성 및 하위 요소를 정의 할 수 있습니다.

7

개미 작업을 정의하기 위해 스크립팅을 사용하는 경우 script 대신 scriptdef 작업을 사용할 수 있습니다. scriptdef에는 작업의 속성 및 중첩 요소에 액세스 할 수 있도록 미리 정의 된 객체가 있습니다.

은 개미에서 자바 스크립트의 속성에 액세스하기위한 작동합니다
<scriptdef name="myFileCheck" language="javascript"> 
    <attribute name="myAttribute" /> 
    <![CDATA[ 
     importClass(java.io.File); 
     importClass(java.io.FileReader); 
     importClass(java.io.BufferedReader); 
     var fileName = attributes.get("myAttribute"); //get attribute for scriptdef 
     var reader = new BufferedReader(new FileReader(new File(fileName))); 
     //... etc 
     project.setProperty("my.result", result)); 
    ]]> 
</scriptdef> 

은 그럼 그냥 갈 수 있습니다 : 같은 <myFileCheck myAttribute="./some.file" /> 정기적 개미 작업처럼. 당신이 원하는 경우
또한 수는 등 파일 세트를 사용하는, 더 자세한 사항 : http://ant.apache.org/manual/Tasks/scriptdef.html

좋은 것은 당신이 대신 구축하는 데 다음 자바를 작성하는, 당신의 개미 스크립트에서 인라인 귀하의 작업을 정의하고 클래스를 포함 할 수있다 파일.

Java1.6 (또는 그 이상)을 사용하거나 클래스 경로에 apache BSF가 있어야합니다.

관련 문제