脚本标记支持 - 错误:macrodef不支持嵌套的"script"元素

Ash*_*gde 2 java ant

我正在研究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>
Run Code Online (Sandbox Code Playgroud)

当我使用<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>
Run Code Online (Sandbox Code Playgroud)

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

macrodef doesn't support the nested "script" element.
Run Code Online (Sandbox Code Playgroud)

其中macrodef不支持脚本!怎么能克服这个?或者有没有更好的方法来优化我的build.xml代码块?

Jay*_*yan 6

您正在将目标内的任务转换为macrodef以供重用.在这种情况下,捕获sequentialmacrodef块内的逻辑.

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