Comment vérifier si le répertoire existe avant de le supprimer, en utilisant ANT?

En utilisant ANT, Comment puis-je m'assurer que ce répertoire existe avant d'essayer de le supprimer?

Dans le cadre de ma tâche de nettoyage actuelle, je

<target name="clean" description="clean">
    <delete dir="${build}" />
    <delete dir="${bin}" />
    <delete dir="${dist}/myrunner.${version}.jar" />
    <delete dir="${doc}" />
    <delete dir="${report}" />
</target>

Cela fonctionne bien, cependant (évidemment) remove se produit quand il y a quelque chose à supprimer.

En utilisant ANT, Comment puis-je vérifier si le répertoire existe?

31
demandé sur JAM 2011-06-13 23:01:42

6 réponses

Pour ce cas spécifique, Je ne vais pas répondre à la question "Comment trouver si un répertoire existe", car cela a déjà été répondu, mais je vais juste souligner que dans votre tâche propre, vous pouvez utiliser failonerror="false" pour empêcher la tâche ant de quitter. Cela devrait convenir dans une tâche propre, car s'il n'y a rien à nettoyer, cela ne devrait pas poser de problème.

    <target name="clean" description="clean">
        <delete dir="${build}" failonerror="false"/>
        ....
        <delete dir="${report}" failonerror="false"/>
    </target>

Ceci est utile si vous ne voulez pas installer ant-contrib ou ne pouvez pas pour une raison quelconque.

36
répondu ekangas 2012-10-22 17:04:12

Avec Vanilla ant, vous utiliseriez quelque chose comme =

 <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 voir = Ant vérifier l'existence d'un ensemble de fichiers
pour une question similaire

13
répondu Rebse 2017-05-23 12:17:32

Solution agréable et propre ci-dessous: en utilisant ANT-contribs.pot

Lorsque vous utilisez cette solution, assurez-vous de mettre la ligne suivante sur le dessus

<!-- 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>
13
répondu JAM 2011-09-03 23:55:45

Consultez la tâche disponible.

Voici une question similaire.

Dois-je avoir un moyen de vérifier l'existence d'un répertoire de Fourmis (pas un fichier)?

3
répondu pjeong 2017-05-23 11:54:25

Voici la réponse :

    <target name="delete.target.directory">  
        <delete includeemptydirs="true" verbose="false" if="${(directory::exists(directory))}">
            <fileset basedir="${directory}">  
                <include name="**/*.*" />  
            </fileset> 
        </delete>
    </target> 
1
répondu TuciBeyin 2014-10-21 10:53:44

Vous pouvez le faire en ordonnant de supprimer une liste de fichiers avec des noms égaux au nom dont vous avez besoin. C'est beaucoup plus facile et direct que de créer une cible spéciale. Et vous n'avez pas besoin d'outils supplémentaires, juste la Fourmi.

    <delete>
        <fileset includes="name or names of file or files you need to delete"/>
    </delete>

Http://ant.apache.org/manual/Types/fileset.html

0
répondu Gangnus 2014-05-16 14:41:52