2009-05-12 7 views
7

J'ai ce code dans mon build.xml:exec Ant refactorisation

<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 séquence est la même ... Je me demande comment ce petit fragment refactorisation afin de le garder au sec.

Répondre

10

peut-être essayer d'utiliser une propriété pour les bits communs avec arg-line? quelque chose comme ceci:

<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

merci, cela a fonctionné comme un charme :) – dfa

6

Définir un macro.

Vous pouvez globaliser les parties partagées d'un élément et exécuter conditionnellement les parties spécifiques.

+1

Ceci est une excellente solution si vous devez effectuer la même tâche plus d'une fois. –

0

I pense que la version Unix fonctionnera sous NT si vous avez le xsltproc.exe disponible via la variable d'environnement PATH. Vous pourriez essayer d'enlever l'osfamily et voir.