2013-05-27 3 views
1

я работаю на некотором блоке кода на Apache ANTScript Поддержка тегов - ошибка: macrodef не поддерживает вложенный элемент «скрипт»

<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?

ответ

4

Вы преобразовываете задачу внутри цели в макродеф для повторного использования. В этом случае запишите логику внутри блока sequential блока макродеформа.

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

+0

It's, Working now. Но написать способ использования macrodef вместо целевого. Потому что, когда я использовал цель, он запустил 10 секунд для выполнения моей задачи, а с помощью макродефа - 15 секунд! –

+0

Выглядит хорошо. Является ли это медленным, когда вы вызываете несколько раз как часть одного шага сборки? – Jayan

+0

Вы догадываетесь об этом правильно; Да! Я вызываю его несколько раз как часть одного и того же шага сборки. –

Смежные вопросы