3

我正在研究 Apache ANT 上的一些代码块

<target name="workload">
        <script language="javascript"><![CDATA[ 
            println("<div id='collapseOne' class='accordion-body collapse in'><div class='accordion-inner'><pre>"); ]]>
        </script>

        <apply dir="${dir.publish.ini}" executable="java" parallel="false" failonerror="false">
            <fileset dir="${dir.ini}">
                <include name="**/*.ini"/> 
            </fileset>
            <arg value="-jar" />
            <arg path="${tool}" />
            <srcfile/>
        </apply>

        <script language="javascript"><![CDATA[ println("</pre></div></div>"); ]]></script>         
    </target>

当我使用<antcall target="workload"/> 它工作正常。

我必须优化这个代码块。所以我尝试使用以下代码:

<macrodef name="workload">
            <script language="javascript"><![CDATA[ 
                println("<div id='collapseOne' class='accordion-body collapse in'><div class='accordion-inner'><pre>"); ]]>
            </script>

            <apply dir="${dir.publish.html}" executable="java" parallel="false" failonerror="false">
                <fileset dir="${dir.ini}">
                    <include name="**/*.ini"/> 
                </fileset>
                <arg value="-jar" />
                <arg path="${tool}" />
                <srcfile/>
            </apply>

            <script language="javascript"><![CDATA[ println("</pre></div></div>"); ]]></script>         
        </macrodef>

当我打电话给它时<antcall target="workload"/>,它显示了以下错误:

macrodef doesn't support the nested "script" element.

它的宏定义不支持脚本!如何克服这一点?或者有没有更好的方法来优化我的 build.xml 代码块?

4

1 回答 1

8

您正在将目标内的任务转换为宏定义以供重用。在这种情况下,捕获sequential宏定义块内的逻辑。

http://ant.apache.org/manual/Tasks/macrodef.html

于 2013-05-27T05:55:39.203 回答