我正在研究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.
哪个macrodef不支持脚本!怎么能克服这个?或者有没有更好的方法来优化我的build.xml代码块?
答案 0 :(得分:5)
您正在将目标内的任务转换为macrodef以供重用。在这种情况下,捕获macrodef的sequential
块内的逻辑。