Подтвердить что ты не робот

Как проверить, существует ли каталог перед удалением, используя ANT?

Используя ANT, как я могу убедиться, что каталог существует, прежде чем пытаться его удалить?

В рамках моей текущей чистой задачи 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>

Это хорошо работает, однако (очевидно) удаление происходит, когда есть что-то удалить.

Используя ANT, как я могу проверить, существует ли каталог?

4b9b3361

Ответ 1

Приятное и чистое решение ниже: Использование ant -contribs.jar

При использовании этого решения обязательно поставьте следующую строку сверху

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

Ответ 2

В этом конкретном случае я не буду отвечать на вопрос "как найти каталог", потому что на это уже был дан ответ, но я просто хочу указать, что в вашей чистой задаче вы можете использовать failonerror="false", чтобы сохранить задачу ant. Это должно быть подходящим в чистой задаче, потому что если нет ничего, чтобы очистить, это не должно быть проблемой.

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

Это полезно, если вы не хотите устанавливать ant -contrib или не можете по какой-либо причине.

Ответ 3

с ванилью ant вы бы использовали что-то вроде =

 <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 проверить существование набора файлов
для аналогичного вопроса

Ответ 5

Вот ответ:

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

Ответ 6

Вы можете сделать это, заказывая удаление списка файлов с именами, равными требуемому имени. Это намного проще и проще, чем создать специальную цель. И вам не нужны никакие дополнительные инструменты, просто чистые Ant.

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

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