包含文件的所有子目录的 Ant Dirset

Ant Dirset of all Sub-Directories which contain Files

我需要制作一个目录集,其中包含所有包含文件的低级目录。 因此,例如这样的结构:

.
├── _a
├── _b
|   ├── file1.class
|   └── file2.class
├── _c
|   └── _d
|        └── file3.class
├── _e
|   ├── _f
|   └── _g
└── _h
    └── file4.class

会导致目录混乱:

./b/
./c/d/
./h/

我怎样才能做到这一点?

不确定你想要哪个任务。

无论如何,尝试 fileset,如下所示:

<fileset dir="${base.dir}" casesensitive="yes">
  <include name="**/*.*"/>
</fileset>

我找到了解决办法,就是先在我需要扫描的目录下创建一个文件集,然后使用pathconvert来获取所有文件的父目录和相对路径。

剩下的就是创建一个目录集,其中包含指定路径转换的路径(它还会删除重复的目录条目)。

<pathconvert pathsep="," property="filePaths">
    <map from="${basedir}/" to="" />
    <!-- get parent of file -->
    <regexpmapper from="(.*)${file.separator}" to="" />
    <path>
        <!-- change dir to your directory -->
        <fileset dir="${basedir}/dir" casesensitive="yes">
            <include name="**/*.*" />
        </fileset>
    </path>
</pathconvert>

<dirset dir="${basedir}/" casesensitive="yes" includes="${filePaths}" />