蚂蚁模式匹配 - *与**

时间:2015-10-29 14:57:39

标签: ant teamcity teamcity-9.0

我们正在使用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/)那将是惊人的。

2 个答案:

答案 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>