我正在使用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中对字符串进行排序,但在我尝试实现之前,想知道是否还有其他方法。
答案 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。