我有一个javascript函数,我想在Ant构建文件中定义一次,然后在多个目标中调用它,而不必在每个目标中修改它。
下面是我的函数:
divs = project.getProperty("division").split(",");
runMacro = function(macro_name) {
for (i=0; i < divs.length; i++)
{
try {
if (typeof(divs[i]) != "undefined" && divs[i] != "" && divs[i] !== null) {
macro = project.createTask(macro_name);
macro.setDynamicAttribute("division", divs[i]);
macro.setDynamicAttribute("application-version", "${app-version}");
macro.perform();
} else {
throw "Divison name cannot be null.";
}
}
catch (error) {
print("Something went wrong: ", error);
}
}
}
我想从Ant build.xml中的任何目标调用它
<target name="app-status" description="." >
<script language="javascript">
<![CDATA[
myScript.runMacro("get-app-status");
]]>
</script>
</target>
有没有办法在Ant脚本中将JS函数定义为全局函数?
谢谢!
发布于 2018-08-01 03:57:10
谢谢,CAustin。
您是对的,这可以使用Scriptdef来实现。
我还没有尝试过,但是代码应该是这样的:
<scriptdef name="process-divsion" language="javascript">
<attribute name="macro-name"/>
<![CDATA[
divs = project.getProperty('division').split(',');
for (i=0; i < divs.length; i++)
{
try {
print("Processing divison: ", divs[i]);
if (typeof(divs[i]) != "undefined" && divs[i] != "" && divs[i] !== null) {
macro = project.createTask(attributes.get("macro-name"));
macro.setDynamicAttribute( "division", divs[i]);
macro.perform();
}
else {
throw "Division name cannot be null.";
}
}
catch (error) {
print("Something went wrong: ", error);
}
}
]]>
</scriptdef>
然后,可以在build.xml中的任何位置调用它
<target name="app-status" >
<process-division macro-name="get-app-status" />
</target>
https://stackoverflow.com/questions/51598213
复制相似问题