繁体   English   中英

Ant:关于dirsets的两个问题

[英]Ant: Two questions about dirsets

我有两个关于Apache Ant中dirset类型的问题。

  • dirset真的是一套,没有保证订单,还是保留了输入订单? 我想使用ant:contrib来迭代一组目录和命令事项,所以如果Ant的dirset不保留插入顺序,我还有什么替代方案?
  • 如何测试dirset中是否包含某个dir?

[编辑]

如果你看看dirset 看起来它使用java File.list() ,其文档声明没有gauranteed订单。 所以,你绝对不能指望这一点。 但是,在返回之前调用Arrays.sort(files); 见1572行。


根据保留顺序,我不能说,我会冒险,没有保证,但它通常只是保留文件系统顺序。

至于测试,我认为你想要,如果这个文件存在或类似的东西,使用ant contrib,做行动,

<for param="directory">
<dirset dir="dirIneedtoexist">
</dirset>
<sequential>
     <!-- Stuff to do if it exists. -->          
</sequential>
</for>

如果dirset中没有任何东西,如果不做任何事情。

根据这个页面

dirset将目录集添加到隐式构建路径。 请注意,目录将以特定顺序添加到构建路径中,因此如果顺序很重要,则应使用文件列表!

这是关于如何使用FileList的链接

关于dirset的Ant文档中没有太多内容。

如果您使用patternset ,则无法保证订单。

如果使用include ,列出单个目录而不是模式, dirset应保留顺序。 我确实会对此进行测试。

编辑添加:如果我错了,您可以编写自己的Ant自定义任务以保留包含目录的顺序。

不,它不会保留秩序。

dirset的内容基于其父类通过DirectoryScanner公开的内容。 该扫描程序遍历文件系统,不按任何特定顺序执行。

它还使用File.list ,它是订单非确定性的来源:

无法保证结果数组中的名称字符串将以任何特定顺序出现; 特别是,它们不保证按字母顺序出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM