Как проверить, что каталог пуст в ANT?

Как можно проверить, что каталог пуст в ant?

Ответы

Ответ 1

Вы можете использовать задачу pathconvert, чтобы сделать это с помощью свойства setonempty. См. этот пример для использования.

<pathconvert refid="myfileset"
             property="fileset.notempty"
             setonempty="false"/>

установит свойство fileset.notempty только в том случае, если набор файлов, для которого этот refid равен myfileset, не пуст.

Вам просто нужно определить myfileset с вашим каталогом, и никакие исключения не могут получить пустой тест в каталоге:

<fileset dir="foo/bar" id="myfileset"/>

Ответ 2

Это просто дополнение для ответа tonio.

В этом примере cvs checkout эмулируется с помощью команд git:

  • git clone, когда dir пуст
  • git fetch else

<target name="cvs_checkout" depends="git.clone, git.fetch" />

<target name="git.clone" depends="check.dir" unless="dir.contains-files">
  <echo message="Directory ${dir} is empty -} git clone" />
  <exec executable="git">
    <arg value="clone"/>
    <arg value="${repo}"/>
    <arg value="${dir}"/>
  </exec>
</target>

<target name="git.fetch" depends="check.dir" if="dir.contains-files">
  <echo message="Directory ${dir} contains files -} git fetch" />
  <exec executable="git" dir="${dir}">
    <arg value="fetch"/>
  </exec>
</target>

<target name="check.dir">
  <fileset dir="${dir}" id="fileset"/>
  <pathconvert refid="fileset" property="dir.contains-files" setonempty="false"/>
</target>