2009-05-12 3 views
7

mam ten kod w moim 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> 

kolejność jest taka sama ... Zastanawiam się, jak ten mały fragment refaktoryzacji w celu utrzymania go na sucho.

Odpowiedz

10

może spróbować użyć właściwości dla wspólnych bitów z arg-line? coś takiego:

<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

dziękuję, działało jak czar :) – dfa

6

Zdefiniuj macro.

Można globalnie udostępniać części w elemencie i warunkowo wykonywać określone części.

+1

To doskonałe rozwiązanie, jeśli musisz wykonać to samo zadanie więcej niż raz. –

0

I myśl wersja Unix będzie działać pod NT, jeśli masz xsltproc.exe dostępne za pośrednictwem zmiennej środowiskowej PATH. Możesz spróbować usunąć osiernię i zobaczyć.