如何使用模式集过滤文件列表



这看起来应该是显而易见的,但我不认为是

  • 以空格分隔的文件列表(或逗号分隔的,等等)
  • 白名单模式的<patternset>

如何生成包含列表中与白名单模式匹配的所有文件的<fileset>

从列表中获取文件列表很容易:

<patternset id="the patternset"includes="${list.of.files}"/><fileset id="the fileset"dir="${basedir}"><patternset refid="the patternset"/><文件集><pathconvert pathsep="${line.separator}"property="the filelist"refid="the fileset"/><echo>文件集:${filelist}<echo>

…将很高兴地生成一个包含${list.of.files}中所有文件的文件集。但添加了某种过滤器:

<patternset id="the filter"><include name="includeeme/**/*.java"/><exclude name="excludeme/**/*.java"/><图案集><patternset id="the patternset"includes="${list.of.files}"/><fileset id="the fileset"dir="${basedir}"><patternset refid="the patternset"/><patternset refid="过滤器"/><文件集><pathconvert pathsep="${line.separator}"property="the filelist"refid="the fileset"/><echo>文件集:${filelist}<echo>

…将列出模式集的并集,即与the-filterthe-patternset匹配的所有文件。

如何生成包含${list.of.files}中与the-patternset匹配的文件的文件集?

这里有一个封装的示例。创建两个文件集(或者文件列表),每个文件集一个。我只在这里使用固定列表:

<property name="list.1" value="a,b,c" />
<property name="list.2" value="b,c,d" />
<fileset dir="." id="set.1" includes="${list.1}" />
<fileset dir="." id="set.2" includes="${list.2}" />

然后使用<intersect>资源集合来获得所需的"重叠"集:

<intersect id="intersect">
    <resources refid="set.1"/>
    <resources refid="set.2"/>
</intersect>

大多数Ant任务都允许您使用资源集合来代替简单的文件集。

相关内容

  • 没有找到相关文章

最新更新