¿Existe una tarea ANT que ejecute un bloque solo si existe un archivo determinado? Tengo el problema de que tengo un script de hormiga genérico que debería hacer un procesamiento especial, pero solo si hay un archivo de configuración específico.
file
ant
build-automation
Mario Ortegón
fuente
fuente
Respuestas:
Disponible y condición
fuente
if
yunless
solo habilitan o deshabilitan el objetivo al que están unidos, es decir, las dependencias del objetivo siempre se ejecutan. De lo contrario, no funcionaría depender de un objetivo que establezca la propiedad que está buscando.<Available>
está en desuso. He usado esto:<target name="do-if-abc" if="${file::exists('abc.txt')}"> ... </target>
consulte: nant.sourceforge.net/release/0.85/help/functions/…<available>
está en desuso? 2:${file::existst...}
parece no funcionar con Ant (Apache ANT 1.9.7)Esto podría tener un poco más de sentido desde una perspectiva de codificación (disponible con ant-contrib: http://ant-contrib.sourceforge.net/ ):
fuente
Desde Ant 1.8.0 aparentemente también hay recursos existentes
De http://ant.apache.org/manual/Tasks/conditions.html
Estaba a punto de reelaborar el ejemplo de la buena respuesta anterior a esta pregunta, y luego encontré esto
del manual de hormigas en http://ant.apache.org/manual/properties.html#if+unless
Esperemos que este ejemplo sea de utilidad para algunos. No están utilizando resourceexists, pero ¿presumiblemente podrías? .....
fuente
if="${file.exists}"
debe reemplazarse porif="file.exists"
asif
yunless
verifique solo la existencia de la propiedad por nombre, no su valor.Creo que vale la pena hacer referencia a esta respuesta similar: https://stackoverflow.com/a/5288804/64313
Aquí hay otra solución rápida. Hay otras variaciones posibles en esto usando la
<available>
etiqueta:fuente
Marque 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, no sabes el nombre exacto del archivo.
Aquí, estamos buscando archivos " * .sql " en cualquier subdirectorio llamado " DB_ * ", de forma recursiva. Puede ajustar el filtro a sus necesidades.
NB: Apache Ant 1.7 y superior!
Aquí está el objetivo para establecer una propiedad si existen archivos coincidentes:
Aquí hay un objetivo "condicional" que solo se ejecuta si existen archivos:
fuente
Puede hacerlo ordenando realizar la operación con una lista de archivos con nombres iguales a los nombres que necesita. Es mucho más fácil y directo que crear un objetivo especial. Y no necesita ninguna herramienta adicional, solo hormiga pura.
Ver: FileSet .
fuente