2011-06-06 13 views
6

Actualmente hagoHormiga: ¿Cómo Interate sobre todas las subcarpetas y realizar una tarea de hormiga

<foreach list="${myfolders}" target="bundle" 
    param="worksheet" inheritall="true"/> 

para ejecutar el "paquete" de destino en una lista de carpetas. Sin embargo, el problema es que necesito establecer esta lista. ¿Cómo uso Ant para simplemente recorrer todas las carpetas del directorio principal?

Si hay una manera de hacer esto y también excluir carpetas específicas que serían incluso mejores. Gracias.

Respuesta

-1

Utilizo la tarea foreach de ant-contrib para realizar un trabajo similar. Esto llamará a un objetivo específico para cada entrada en una lista, pasando la entrada como un parámetro cada vez.

+0

Busco a una manera de hacer esto sin proporcionar una lista. El conjunto de subcarpetas cambia constantemente en mi caso, y no quiero tener que actualizar siempre la lista en consecuencia. – Solomon

+0

Parece que David W ya se ha expandido en esto. La "lista" en realidad puede ser algo que se genera automáticamente. – Ben

8

le puede proporcionar una <dirset> para la tarea <foreach> para operar en:

<foreach target="bundle" param="worksheet" inheritall="true"> 
     <path> 
      <dirset dir="${subDir}"> 
       <include name="*"/> 
      </dirset> 
     </path> 
</foreach> 

en cuenta que el parámetro list no se utiliza cuando lo hago de esta manera.

No puede usar <dirset> directamente debajo de <foreach> como lo puede hacer con <fileset>. Sin embargo, puede poner el <dirset> debajo del <path> como se muestra arriba. El <include name="*"/> previene el reaprovisionamiento del árbol de directorios.

+0

Gracias. Cuando lo intento, aparece un error "El tipo' 'no admite el elemento anidado 'ruta'". Si saco '', aparece el error "El tipo' 'no admite el elemento 'dirset' anidado" – Solomon

+0

¿Qué versión del contenedor antcontrib está usando? Pruebe mi [build.xml] (http://dl.dropbox.com/u/433257/build.xml). Eso es lo que usé para probar. –

+0

Esto funcionó perfectamente. Debe ser aceptado – prolink007

0

Usted puede hacer esto con subant

Ejemplo:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="subant" default="subant1"> 

     <target name="subant1"> 

      <subant target=""> 

       <dirset dir="." includes="*"/> 
       <target name="release" /> 

      </subant> 

     </target> 

</project> 
Cuestiones relacionadas