validar - ¿Cómo verificar si el directorio existe antes de eliminarlo, usando ANT?
verificar existencia de archivo en shell (6)
Usando ANT
, ¿cómo puedo asegurarme de que ese directorio exista antes de intentar eliminarlo?
Como parte de mi tarea limpia actual,
<target name="clean" description="clean">
<delete dir="${build}" />
<delete dir="${bin}" />
<delete dir="${dist}/myrunner.${version}.jar" />
<delete dir="${doc}" />
<delete dir="${report}" />
</target>
Esto funciona bien, sin embargo (obviamente) eliminar ocurre cuando hay algo que eliminar.
Usando ANT
, ¿cómo puedo verificar si el directorio existe?
Buena y limpia solución a continuación: Usando ant-contribs.jar
Cuando use esta solución, asegúrese de poner la siguiente línea en la parte superior
<!-- For <if> statements -->
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<!-- Remove distribution directories and their content for a clean build -->
<target name="clean" description="clean">
<if>
<available file="${build}" type="dir" />
<then>
<delete dir="${build}" />
</then>
</if>
</target>
Para este caso específico, no voy a responder la pregunta "cómo encontrar si existe un directorio", porque eso ya ha sido respondido, pero solo voy a señalar que en su tarea limpia puede usar failonerror="false"
para evitar que la tarea ant se cierre. Esto debería ser adecuado en una tarea limpia porque si no hay nada que limpiar, no debería ser un problema.
<target name="clean" description="clean">
<delete dir="${build}" failonerror="false"/>
....
<delete dir="${report}" failonerror="false"/>
</target>
Esto es útil si no desea instalar Ant-Contrib o no puede por alguna razón.
Puede hacerlo ordenando eliminar una lista de archivos con nombres iguales al nombre que necesita. Es mucho más fácil y directo que crear un objetivo especial. Y no necesita ninguna herramienta adicional, solo hormiga pura.
<delete>
<fileset includes="name or names of file or files you need to delete"/>
</delete>
Aquí está la respuesta:
<target name="delete.target.directory">
<delete includeemptydirs="true" verbose="false" if="${(directory::exists(directory))}">
<fileset basedir="${directory}">
<include name="**/*.*" />
</fileset>
</delete>
</target>
Verifique la tarea disponible.
Aquí hay una pregunta similar.
¿Tengo alguna forma de verificar la existencia de un directorio en Ant (no en un archivo)?
con la hormiga de vainilla, usarías algo como =
<target name="check">
<condition property="deldir">
<available file="${somedir}" type="dir"/>
</condition>
</target>
<target name="deldir" depends="check" if="deldir">
<delete dir="${somedir}"/>
<!-- .. -->
</target>
else see = Ant verificar existencia para un conjunto de archivos
por una pregunta similar