如何在Ant排序任务中更改dirset / fileset的排序规则

时间:2014-06-05 15:32:04

标签: maven sorting ant

我正在使用Ant和Maven来构建和部署我的war文件。 它主要是工作,但部署的一部分是基于存储在名为this:

的目录中的文件来更新数据库

0.0.1 0.0.2 ... 0.0.9 ... 1.4.5 .... 1.4.11 ...

当然这需要按从早期版本到较新版本的脚本的顺序进行,例如1.4.5需要在1.4.11之前完成

我知道你可以通过在文件集上使用antcontrib进行排序,但问题是它按字母顺序排序,我想用数字方式进行排序。有什么办法吗?

PS。我想我可以使用脚本标签在Javascript中对字符串进行排序,但在我尝试实现之前,想知道是否还有其他方法。

1 个答案:

答案 0 :(得分:1)

使用sorted resource collection并按名称排序,例如: :

给出:

c:\tryme
+-0.0.1
+-0.0.2
+-0.0.3
带有简单回声的

摘录:

<project>

<pathconvert property="sorted" pathsep="${line.separator}">
 <sort>
  <dirset dir="c:\tryme" />
  <name/>
 </sort>
</pathconvert>

<echo>$${sorted} => ${sorted}</echo>

</project>

输出:

[echo] ${sorted} => c:\tryme
[echo] c:\tryme\0.0.1
[echo] c:\tryme\0.0.2
[echo] c:\tryme\0.0.3

修改

请注意,在使用数字排序dirnames(更常见的是字符串)时,可能会出现意外结果,因为使用的ASCII排序不考虑字符串中的数值。您可以使用另一个比较器(f.e。Alphanum Algorithm)和您自己的过滤链,请参阅ant manual FilterChains and Filterreaders