我在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>
序列是一样的...我想知道如何重构这个小片段以保持干燥。
答案 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并查看。