2009-05-12 10 views
7

tengo este código en mi build.xml:ejecutivo Ant refactorización

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

la secuencia es la misma ... Me pregunto acerca de cómo refactorización este pequeño fragmento con el fin de mantenerlo seco.

Respuesta

10

quizás intente usar una propiedad para los bits comunes con arg-line? algo como esto:

<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

gracias, funcionó como un encanto :) – dfa

6

Defina un macro.

Puede englobar las partes compartidas en un elemento y ejecutar condicionalmente las partes específicas.

+1

Esta es una excelente solución si tiene que realizar la misma tarea más de una vez. –

0

I think la versión de Unix funcionará en NT si tiene el xsltproc.exe disponible en la variable de entorno PATH. Podría intentar eliminar la familia de las familias y ver.

Cuestiones relacionadas