¿La tarea Ant ejecuta un objective Ant solo si existe un archivo?

¿Hay una tarea ANT que ejecute un bloque solo si existe un archivo dado? Tengo el problema de que tengo un script ant genérico que debe hacer un procesamiento especial, pero solo si hay un archivo de configuración específico presente.

Disponible y condición

    ...  

Esto podría tener un poco más de sentido desde una perspectiva de encoding (disponible con ant-contrib: http://ant-contrib.sourceforge.net/ ):

     ...   ...    

Desde Ant 1.8.0 aparentemente también existen recursos

De http://ant.apache.org/manual/Tasks/conditions.html

Prueba un recurso para la existencia. desde Ant 1.8.0

El recurso real a probar se especifica como un elemento nested.

Un ejemplo:

    

Estaba a punto de volver a trabajar el ejemplo de la buena respuesta anterior a esta pregunta, y luego encontré esto

A partir de Ant 1.8.0, en su lugar puede usar la expansión de propiedad; un valor de true (o on o yes) habilitará el elemento, mientras que false (o off o no) lo desactivará. Se sigue suponiendo que otros valores son nombres de propiedad, por lo que el elemento solo se habilita si se define la propiedad indicada.

En comparación con el estilo anterior, esto le brinda flexibilidad adicional, ya que puede anular la condición desde la línea de comando o las secuencias de comandos principales:

        

del manual de ants en http://ant.apache.org/manual/properties.html#if+unless

Espero que este ejemplo sea útil para algunos. No están utilizando resourceexists, pero ¿se supone que podrías? …..

Creo que vale la pena hacer referencia a esta respuesta similar: https://stackoverflow.com/a/5288804/64313

Aquí hay otra solución rápida. Existen otras variaciones posibles con la etiqueta :

 # exit with failure if no files are found       

Consulte Usar filtros de nombre de archivo como DB_*/**/*.sql

Aquí hay una variación para realizar una acción si existen uno o más archivos correspondientes a un filtro comodín. Es decir, usted no sabe el nombre exacto del archivo.

Aquí, estamos buscando archivos ” * .sql ” en cualquier subdirectorio llamado ” DB_ * “, recursivamente. Puede ajustar el filtro a sus necesidades.

NB: ¡Apache Ant 1.7 y superior!

Aquí está el objective para establecer una propiedad si existen archivos coincidentes:

        

Aquí hay un objective “condicional” que solo se ejecuta si existen archivos:

    

Puede hacerlo ordenando hacer la operación con una lista de archivos con nombres iguales al nombre (s) que necesita. Es mucho más fácil y directo que crear un objective especial. Y no necesita ninguna herramienta adicional, solo ant pura.

    

Ver: FileSet .