2011-07-12 15 views
21

tengo 2 conjuntos de archivos diferentes definidos en la hormiga de la siguiente manera:Combinar conjuntos de archivos utilizando Ant

<fileset id="fileset1" dir="${classes.dir}"> 
</fileset> 

<zipfileset id="fileset2" src="myArchive.zip" includes="**/*.class"> 
</zipfileset> 

Quiero crear un tercer conjunto de archivos que es la unión de ambos conjuntos de archivos anteriores

<fileset id="merged"> 
</fileset> 
puede

alguien dime cómo hacer esto? ¿Es posible hacer algo como eso? ¡Gracias de antemano!

Respuesta

2

Pruebe esto: Creo que debería funcionar, ya que <fileset> es implícita <patternset>.

<fileset id="fileset1" dir="${classes.dir}"> 
</fileset> 

<zipfileset id="fileset2" src="myArchive.zip" includes="**/*.class"> 
</zipfileset> 

EDITAR: impar. Esto quizás?

<patternset id="merged"> 
    <patternset refid="fileset1" /> 
    <patternset refid="fileset2" /> 
</patternset> 
+0

Gracias por la respuesta. Intenté hacer esto. Parece que requiere un atributo dir. –

15

Una forma de hacerlo es con Ant resource collections, en particular un union.

<fileset id="fileset1" dir="${classes.dir}" /> 
<zipfileset id="fileset2" src="myArchive.zip" includes="**/*.class" /> 

<union id="onion"> 
    <resources refid="fileset1" /> 
    <resources refid="fileset2" /> 
</union> 

A continuación, se puede hacer referencia a la 'cebolla' en cualquier lugar puede utilizar un conjunto de archivos, por ejemplo,

<copy todir="dest"> 
    <resources refid="onion" /> 
</copy> 

recomiendo el uso de genéricos resources elementos en lugar de conjuntos de archivos para una máxima flexibilidad.

+6

La unión no funciona para mí. Obtengo que "xxx no denota un conjunto de archivos" en mi caso, porque el objetivo que necesito invocar espera explícitamente el conjunto de archivos: '': - \ – alexandroid

+0

@alexandroid ¿Qué objetivo espera un conjunto de archivos? ¡Tal vez puedas parchear para aceptar una colección de recursos en su lugar! Muchas tareas de ant están rediseñadas para colecciones de recursos en la versión 1.7 – Rebse

+0

Es el objetivo del script/paquete del que no tengo control directo en este momento, desafortunadamente (solo lo estoy llamando) – alexandroid

Cuestiones relacionadas