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



我使用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。

相关内容

  • 没有找到相关文章

最新更新