java - instalar - ¿Cómo elimino un dirset de directorios con Ant?
building apache ant (3)
Quiero eliminar todos los directorios y subdirectorios en un directorio raíz que contenga "tmp" en sus nombres. Esto debería incluir cualquier archivo .svn también. Mi primera suposición es usar
<delete>
<dirset dir="${root}">
<include name="**/*tmp*" />
</dirset>
</delete>
Esto no parece funcionar ya que no puede anidar un dirset
en una etiqueta de delete
.
¿Es este un enfoque correcto, o debería estar haciendo otra cosa?
- versión de hormiga == 1.6.5.
- versión java == 1.6.0_04
Aquí está la respuesta que funcionó para mí:
<delete includeemptydirs="true">
<fileset dir="${root}" defaultexcludes="false">
<include name="**/*tmp*/**" />
</fileset>
</delete>
Tenía una complicación adicional que necesitaba para eliminar los directorios .svn
también. Con los defaultexcludes
, se excluyeron los archivos .*
, Por lo que los directorios vacíos no estaban realmente vacíos, por lo que no se eliminaron.
El atributo includeemptydirs
(thanks, flicken, XL-Plüschhase) permite que el comodín **
final coincida con una cadena vacía.
tratar:
<delete includeemptydirs="true">
<fileset dir="${root}">
<include name="**/*tmp*/*" />
</fileset>
</delete>
¡Gracias, amigo!
Solo quería agregar que la parte de la solución que funcionaba para mí se agregaba /**
al final de la ruta de inclusión. Intenté lo siguiente para eliminar los directorios de Eclipse .settings:
<delete includeemptydirs="true">
<fileset dir="${basedir}" includes"**/.settings">
</delete>
pero no funcionó hasta que lo cambié a lo siguiente:
<delete includeemptydirs="true">
<fileset dir="${basedir}" includes"**/.settings/**">
</delete>
Por alguna razón, al agregar /**
a la ruta, se eliminan los archivos en el directorio correspondiente, todos los archivos en todos los subdirectorios, los subdirectorios y los directorios coincidentes. Agregar /*
solo elimina archivos en el directorio coincidente pero no eliminará el directorio coincidente.