我们正在使用TeamCity生成我们不想清理的*.nupkg
个工件。 TeamCity提供了一个字段,您可以在其中指定ANT样式的模式,以指示您要执行或不希望清除哪些文件。让我们假设我们有以下文件,我们不想清理它们:
/a.nupkg
/dir1/b.nupkg
/dir1/dir2/c.nupkg
*.nupkg
模式是否与根目录和所有子目录中的.nupkg
文件匹配,或者是否需要使用**.*nupkg
来遍历所有目录?
我阅读了以下文档,但这对我来说仍然含糊不清:http://ant.apache.org/manual/dirtasks.html#patterns
如果有一个Ant模式测试器(类似于http://regexpal.com/)那将是惊人的。
答案 0 :(得分:5)
匹配所有目录中的所有文件(来自基本目录和更深层次)
**/*.nupkg
将匹配
sample.nupkg
sample-2.nupkg
tmp/sample.nupkg
tmp/other.nupkg
other/new/sample.nupkg
**
将匹配任何目录(深层多个目录)。
*.nupkg
将匹配任何带有 nupkg 扩展名的文件。或者只是*
将匹配任何文件或任何目录(但只有一个目录深)。
PS:没有Ant Pattern Tester。
答案 1 :(得分:0)
对于模式测试,一种简单的方法是将文件集内容回显到stdout或文件,f.e。 :
<project>
<fileset dir="..." id="foobar">
<include name="..."/>
<!-- .. -->
</fileset>
<!-- simple echo -->
<echo>${toString:foobar}</echo>
<!-- use pathconvert for listing files line by line -->
<pathconvert property="foo" pathsep="${line.separator}" refid="foobar"/>
<!-- simple echo -->
<echo>${foo}</echo>
<!-- print to file -->
<echo file="whatever.txt">${foo}</echo>
<!-- use nested mapper if you need only basename -->
<pathconvert property="fooflat" pathsep="${line.separator}" refid="foobar">
<mapper>
<flattenmapper />
</mapper>
</pathconvert>
<echo>$${fooflat} => ${line.separator}${fooflat}</echo>
<!-- to combine several filesets use -->
<path id="fooo">
<fileset dir="...">
<include name=".."/>
</fileset>
<fileset>
<!-- ... -->
</fileset>
<fileset>
<!-- ... -->
</fileset>
<!-- ... -- >
</path>
<echo>$${fooo} => ${fooo}</echo>
</project>