我正在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代码块?
最佳答案
您正在将目标内部的任务转换为macrodef以进行重用。在这种情况下,请捕获macrodef的sequential
块内的逻辑。
http://ant.apache.org/manual/Tasks/macrodef.html