ver varios todos significa que para otro mover los funciones directorios directorio crear copiar contenido comandos comando archivos archivo ant

ant - varios - que significa en linux



Conjunto de archivos Tricky Ant(incluye la mayoría, pero no todo un directorio) (3)

Tengo un caso en el que simplemente no puedo encontrar la manera de hacer que Ant introduzca solo los archivos que quiero en un conjunto de archivos (¿por qué demonios la gente de Ant no usaba expresiones regulares?).

Aquí está la situación. Tengo un montón de clases en el directorio de clases. Quiero:

1) Todos los archivos bajo clases,

2) Pero no los de / com / foo / bar

3) Excepto que quiero /com/foo/bar/AbstractCustomerAdapter.class y CustomerAdapterFactory.class.

Los archivos en / com / foo / bar se denominan generalmente cosas como FooCustomerAdapter.class.

En pocas palabras, creamos 2 frascos, uno con solo los anuncios específicos del cliente y otro con todo lo demás. Esto nos permite crear un nuevo adaptador de cliente e intercambiar solo ese mini-jar. El conjunto de archivos que me está matando es el "todo lo demás".

Una vez que Ant excluye un archivo, no incluirlo lo devolverá, por lo que los elementos 2 y 3 me están desilusionando sobre cómo hacer el conjunto de archivos. ¿Cómo puedo excluir todos mis adaptadores de cliente, pero no el adaptador de cliente abstracto? No hay ningún comodín compatible con hormigas que pueda hacer para excluir las clases XZYCustomerAdapter sin excluir AbstractCustomerAdapter.

Bueno, al menos no puedo imaginar uno, pero espero que uno de ustedes los habitantes de Stack Overflow sea más inteligente que yo :)


Escribe un selector personalizado . El api es fácil de implementar. Ahí tienes todo el poder de Java que necesitas para decidir.


La mayoría de las tareas que aceptan un solo conjunto de archivos también pueden aceptar múltiples conjuntos de archivos.

<jar file="..."> <fileset dir="classes"> <exclude name="com/foo/bar/**"/> </fileset> <fileset dir="classes"> <include name="com/foo/bar/AbstractCustomerAdapter.class"/> <include name="com/foo/bar/CustomerAdapterFactory.class"/> </fileset> </jar>


Tengo dos cosas diferentes que hago en diferentes lugares. A veces copio archivos en una ubicación temporal para poder incluir todo lo plausible en un paso y excluir algunos elementos específicos en un paso posterior. Otras veces, uso dos declaraciones separadas.

Parece que no necesita los archivos temporales, pero para transformar algunos archivos de texto en una línea de PC que termina antes de construir una instalación, copio y convierto todo (usando fixcrlf) relevante a un directorio temporal, y luego escojo y selecciono archivos para Diferentes plataformas de la jerarquía creada.

Cuando se crean archivos tar, parece suficiente poder incluir un archivo específico en una línea y excluir el patrón en una línea posterior que incluya otros archivos.

<tarfileset dir="classes" includes="classes" excludes="classes/com/foo/bar" />
<tarfileset dir="classes" includes="classes/com/foo/bar/AbstractCustomerAdapter.class,classes/com/foo/bar/CustomerAdapterFactory.class" />

Si los archivos Jar no se construyen como los archivos tar y zip, es posible que deba crear la jerarquía de archivos explícitamente como lo hago con fixcrlf, y compilar el archivo jar en un segundo paso desde la jerarquía corregida.