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 に答える