这看起来应该是显而易见的,但我不认为是
- 以空格分隔的文件列表(或逗号分隔的,等等)
- 白名单模式的
<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-filter
或the-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任务都允许您使用资源集合来代替简单的文件集。