如何在ANT中测试目录是否为空?

时间:2010-06-15 18:48:03

标签: ant directory

如何测试ant中的目录是否为空?

3 个答案:

答案 0 :(得分:18)

您可以使用pathconvert任务使用setonempty属性执行此操作。有关用例,请参阅this example

<pathconvert refid="myfileset"
             property="fileset.notempty"
             setonempty="false"/>
仅当那些refid为fileset.notempty的文件集不为空时,

才会设置属性myfileset

您只需要在您的目录中定义myfileset,并且不会有任何排除确实让目录为空测试:

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

答案 1 :(得分:3)

这只是tonio's answer的补充。

在此示例中,cvs checkout使用git命令进行模拟:

    git clone为空时
  • dir
  • git fetch其他

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

答案 2 :(得分:0)

仅在目录为空时设置属性的脚本解决方案:

<script language="javascript">
    tests = new java.io.File(project.getProperty("source.test.java.dir"));
    if (tests.list().length == 0) {
        java.lang.System.out.println('no tests: skip.test=true');
        project.setProperty("skip.test", true);
    }
</script>