我使用Ant和Maven来构建和部署我的war文件。它大部分工作,但部署的一部分是基于存储在目录中的文件更新数据库,命名如下:
0.0.1发布...0.0.9...1.4.5…1.4.11…
当然,这需要按照从早期到较新版本的脚本的顺序完成,例如1.4.5需要在1.4.11之前完成
我知道你可以在文件集上使用antcontrib来排序,但问题是它按字母顺序排序,而我想用数字排序。有什么办法吗?
p。我想我可以在Javascript中使用脚本标签排序字符串,但在我尝试实现之前,我想知道是否有其他方法。
使用已排序的资源集合并按名称排序,例如:
:
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.1
[echo] c:tryme .0.2
[echo] c:tryme .0.3
编辑
请注意,当使用数字对dirname(以及更一般的字符串)排序时,可能会得到意想不到的结果,因为使用的ASCII排序不考虑字符串中的数值。您可以使用另一个比较器(例如,alphaum Algorithm)与您自己的过滤器链,参见ant manual FilterChains和Filterreaders。