ant include fileset

Cómo tener un conjunto de archivos Ant INCLUDE tiene prioridad sobre un EXCLUDE



fileset (3)

¿Por qué necesitas el elemento de exclusión?

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

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

Solo pon esto en el modo wiki de la comunidad, porque no estoy seguro, pensándolo bien, que en realidad es lo que buscas:
es posible que desee todo , incluidas las clases /.../ zar.class, excepto las clases / ....

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

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

Si tengo un conjunto de archivos como este:

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

La exclusión tiene prioridad sobre la inclusión y no termino con ninguna clase. [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 con este por un tiempo, leyendo acerca de selectores, modelos, conjuntos de archivos, tratando de combinar conjuntos de archivos, etc. pero no pude hacerlo funcionar.

Alguien sabe cómo hacer esto?


No estoy seguro de qué es exactamente lo que quieres, pero creo que estabas en el camino correcto al mirar 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>


¿Qué versión de Ant se usó 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>

La ruta y el nombre son ligeramente diferentes, pero esto muestra A.class, y no muestra B.class, que está justo al lado.