macrodef与脚本与javascript

bma*_*ies 5 javascript ant

我想创建一个由script元素中的macrodef定义的任务.我希望找到对应于每个属性的'set'函数.没有这样的运气.是否有其他API用于指定属性?

 var statustask = project.createTask("service-status");
 statustask.setPath(project.getProperty("path"));
 statustask.setStatusproperty("status");
 statustask.setTimeout=("1"); // this isn't suppose to take a long time.
 statustask.perform();
Run Code Online (Sandbox Code Playgroud)

mar*_*ton 5

你可以使用MacroInstance(Task的一个子类)的createTask方法来实现你想要的,你可以从宏的方法中获得.这个:

<macrodef name="my.macro">
    <attribute name="attr1" default="NOT SET"/>
    <sequential>
        <echo message="attr1=@{attr1}" />
    </sequential>
</macrodef>

<script language="javascript"><![CDATA[
    var macro = project.createTask( "my.macro" );
    macro.setDynamicAttribute( "attr1", "value_1" );
    macro.execute();
]]></script>
Run Code Online (Sandbox Code Playgroud)

运行时生成:

[echo] attr1=value_1
Run Code Online (Sandbox Code Playgroud)