How to check if directory exists before deleting it, using ANT?

巧了我就是萌 提交于 2019-12-20 09:44:47

问题


Using ANT, how can i make sure that directory exists before attempting to remove it?

As part of my current clean task, i

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

This works well, however (obviously) remove happens when there is something to remove.

Using ANT, how can i check if directory exist?


回答1:


For this specific case, I'm not going to answer the question "how to find if a directory exists", because that's already been answered, but I'm just going to point out that in your clean task you can use failonerror="false" to keep the ant task from exiting. This should be suitable in a clean task because if there's nothing to clean, it should not be a problem.

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

This is useful if you don't want to install ant-contrib or can't for some reason.




回答2:


with vanilla ant you would use something like =

 <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 check existence for a set of files
for a similar question




回答3:


Nice and clean solution below: Using ant-contribs.jar

When using this solution, be sure to put the following line on top

<!-- 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>



回答4:


Check out the available task.

Here's a similar question.

Do I have a way to check the existence of a directory in Ant (not a file)?




回答5:


Here is the answer :

    <target name="delete.target.directory">  
        <delete includeemptydirs="true" verbose="false" if="${(directory::exists(directory))}">
            <fileset basedir="${directory}">  
                <include name="**/*.*" />  
            </fileset> 
        </delete>
    </target> 



回答6:


You can do it by ordering to delete a list of files with names equal to the name you need. It is much easier and direct than to create a special target. And you needn't any additional tools, just pure Ant.

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

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



来源:https://stackoverflow.com/questions/6334939/how-to-check-if-directory-exists-before-deleting-it-using-ant

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!