如何仅在Ant中列出第一级子目录?

时间:2012-02-20 07:27:05

标签: ant

使用Ant,如何仅从第一级列出子文件夹,而不是在目录树下面?

说我有:

dir1
-- dir21
----dir211
-- dir22

<dirset dir="dir1"/>

将列出所有目录,包括dir211。 我怎么能避免这种情况?

2 个答案:

答案 0 :(得分:5)

使用这样的dirset:

<dirset dir="dir" includes="*"/>


<dirset dir="dir1">
 <include name="*"/>
</dirset>

评论后编辑

includes attributenested include name应该是等价的,这里有一些 在我的Windows机器上工作的代码片段,给定C:\ foo \ bar:

<project>
 <echo>
    ${ant.version}
    ${java.version}
    ${os.name}
 </echo>
 <dirset dir="c:/foo" includes="*" id="foobar" />

 <echo>${toString:foobar}</echo>


 <dirset dir="c:/foo" id="foobaz">
  <include name="*" />
 </dirset>

 <echo>${toString:foobaz}</echo>
</project>

输出:

Buildfile: C:\rosebud\AntTest\tryme.xml
     [echo]     Apache Ant(TM) version 1.8.2 compiled on December 20 2010
     [echo]     1.7.0_02
     [echo]     Windows 7
     [echo]  
     [echo] bar
     [echo] bar
BUILD SUCCESSFUL

答案 1 :(得分:0)

我想在我的dirset中包含一个日期选择器,只选择我的根目录的子目录,这意味着我无法使用includes="*"。我的解决方案是使用<depth>选择器

<dirset dir="/myroot" excludes="*/*/**">
   <date datetime="${cuttoff_time}"
         pattern="${timeformat}"
         when="before"
         checkdirs="true" />
   <depth max="1" />
</dirset>