2009-05-12 9 views
7

Ich habe diesen Code in meinem build.xml:Ant exec Refactoring

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

die Sequenz ist das gleiche ... Ich frage mich, wie Refactoring dieses kleine Fragment, um es trocken zu halten.

Antwort

10

vielleicht versuchen, eine Eigenschaft für die gemeinsamen Bits mit Arg-Linie zu verwenden? so etwas wie diese:

<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> 
+0

danke, es funktionierte wie ein Charme :) – dfa

6

ein macro definieren.

Sie können die freigegebenen Teile in einem Element globieren und die spezifischen Teile bedingt ausführen.

+1

Dies ist eine ausgezeichnete Lösung, wenn Sie die gleiche Aufgabe mehr als einmal durchführen müssen. –

0

I denken die Unix-Version wird unter NT funktionieren, wenn Sie über die Umgebungsvariable PATH die xsltproc.exe verfügbar haben. Sie könnten versuchen, die osfamily zu entfernen und zu sehen.