Ant exec重构

时间:2009-05-12 17:56:54

标签: ant refactoring

我在build.xml中使用了这段代码:

    <exec executable="cmd" osfamily="winnt">
        <arg value="/c"/>
        <arg value="xsltproc\bin\xsltproc.exe"/>
        <arg value="--xinclude"/>
        <arg value="-o"/>
        <arg value="dist/html/main.html"/>
        <arg value="xsl/html/docbook.xsl"/>
        <arg value="xml/main.xml"/>
    </exec>
    <exec executable="xsltproc" osfamily="unix">
        <arg value="--xinclude"/>
        <arg value="-o"/>
        <arg value="dist/html/main.html"/>
        <arg value="xsl/html/docbook.xsl"/>
        <arg value="xml/main.xml"/>
    </exec>

序列是一样的...我想知道如何重构这个小片段以保持干燥。

3 个答案:

答案 0 :(得分:10)

也许尝试使用arg-line的公共位属性?像这样的东西:

<property name="xslt.common" value="--xinclude -o dist/html/main.html xsl/html/docbook.xsl xml/main.xml"/>
<exec executable="cmd" osfamily="winnt">
    <arg value="/c"/>
    <arg value="xsltproc\bin\xsltproc.exe"/>
    <arg line="${xslt.common}"/>
</exec>
<exec executable="xsltproc" osfamily="unix">
    <arg line="${xslt.common}"/>
</exec>

答案 1 :(得分:6)

定义macro

您可以对元素中的共享部分进行全局处理,并有条件地执行特定部分。

答案 2 :(得分:0)

认为如果您通过PATH环境变量提供了xsltproc.exe,则Unix版本将在NT下工作。您可以尝试删除osfamily并查看。