gpt4 book ai didi

javascript - 将参数传递给 ANT javascript 任务?

转载 作者:数据小太阳 更新时间:2023-10-29 05:55:31 25 4
gpt4 key购买 nike

在我的 ANT 脚本中,我有时会写 tasks runnning javascript with Rhino .

但是,我不知道如何将参数传递给这些任务。有什么想法吗?

例如...这是此类任务的示例:

<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>

最佳答案

要使用脚本来定义 ant 任务,您可以使用 scriptdef任务而不是 script .与 scriptdef有预定义的对象可以访问任务中的属性和嵌套元素。

这适用于从 Ant 中的 javascript 访问属性:

<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" />与常规 Ant 任务相同。
如果需要,也可以使用文件集等,更多详细信息:http://ant.apache.org/manual/Tasks/scriptdef.html

好处是您可以在 ant 脚本中内联定义您的任务,而不是用 Java 编写它们然后必须构建和包含类文件。

您将需要使用 Java1.6(或更高版本),或者在您的类路径中安装 apache BSF。

关于javascript - 将参数传递给 ANT javascript 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com