2009-01-09 12 views
8

Si tengo un conjunto de archivos de la siguiente manera:Cómo tener una hormiga INCLUYEN conjunto de archivos tener prioridad sobre un EXCLUIRÁ

<fileset dir="."> 
    <exclude name="classes/*"/> 
    <include name="**/zar.class"/> 
</fileset> 

El excluyen tiene prioridad sobre la incluyo y no terminar con las clases. [dado que para este ejemplo hipotético, zar.class está en las clases dir] Me gustaría incluir el archivo zar, aunque esté en las clases dir.

Me golpeé la cabeza contra este por un tiempo, leyendo acerca de selectores, conjuntos de patrones, conjuntos de archivos, tratando de combinar conjuntos de archivos, etc. pero no pude hacerlo funcionar.

¿Alguien sabe cómo hacer esto?

Respuesta

2

No estoy seguro exactamente lo que quiere, pero creo que estaban en la pista derecha mirando hacia la pattersets: ¿Qué tal:

<patternset id="a"> 
    <exclude name="classes/*"/> 
</patternset> 

<patternset id="b"> 
    <include name="**/zar.class"/> 
</patternset> 

<fileset dir="."> 
    <patternset refid="a" /> 
    <patternset refid="b" /> 
</fileset> 
4

¿Por qué necesita el elemento excluir?

<fileset dir="."> 
    <include name="**/zar.class"/> 
</fileset> 

debería darle el conjunto exacto de los archivos que está buscando: zar.class, y ninguno de los otros .class archivos de clases /.


Sólo hay que poner esto en modo de wiki de la comunidad, porque no estoy seguro, pensándolo bien, que es en realidad lo que está buscando:
es posible que desee todo, incluyendo clases /.../ zar.class, excepto clases/....

Mi solución solo le daría zar.class.

Por favor, deje un comentario: si esta no es una buena solución, la eliminaré.

1

¿Qué versión de Ant se utilizó en la pregunta original?

Con Ant 1.8.2, la estrofa produce el resultado deseado!?

<fileset dir="." id="some.fileset"> 
    <exclude name="build/classes/*" /> 
    <include name="**/A.class" /> 
</fileset> 

<target name="test"> 
    <pathconvert pathsep="${line.separator}" property="listed.fileset" refid="some.fileset"/> 
    <echo message="${listed.fileset}" /> 
</target> 

Ruta y nombre ligeramente diferente, pero esto qué durante A.class, y no muestran B.class, que está justo al lado de él.

Cuestiones relacionadas