繁体   English   中英

Ant是否保证文件集的顺序?

[英]Does Ant guarantee order of filesets?

在我们的项目中,我们使用Ant分发文件。 文件存在层次结构,它们会覆盖上一级的文件。 像这样:默认-级别1-级别2。 目前已通过以下方式实现:

<copy todir="...">
 <fileset dir="${root}/default" includes="**/*" excludes="file1" />
 <fileset dir="${root}/level1" includes="**/*" />
 <fileset dir="${root}/level2" includes="**/*" excludes="file2"/>
</copy>

因此,我们希望所有文件夹都包含具有相同名称的文件,它将从level2目录中获取。

不久前,我们使用另一个Java版本将其移至新的构建框,并发现文件集的顺序已损坏。

有没有一种方法可以解决此问题而无需修改ant config文件? 我们有很多。 如果没有办法,我怎么能便宜地买到它? 谢谢。

我不知道文件集的顺序是否被隔离,但是复制任务的顺序是。 因此,按照此答案的建议,使用overwrite =“ true”编写多个复制任务可能是一个好主意:

<copy todir="...">
  <fileset dir="${root}/default" includes="**/*" excludes="file1" />
</copy>
<copy todir="...">
  <fileset dir="${root}/level1" includes="**/*" overwrite="true" />
</copy>
<copy todir="...">
  <fileset dir="${root}/level2" includes="**/*" excludes="file2" overwrite="true" />
</copy>

您可以在fileset集周围包装sort资源集合,并确保通过这种方式复制使用的顺序。 排序本身只喜欢一个单一的资源集合的子元素,所以你需要用的fileset一中unionresources容器。

参见http://ant.apache.org/manual/Types/resources.html#sort

就像是

<sort>
  <resources>
    <fileset dir="${root}/default" includes="**/*" excludes="file1" />
    <fileset dir="${root}/level1" includes="**/*" />
    <fileset dir="${root}/level2" includes="**/*" excludes="file2"/>
  </resources>
  <name/>
</sort>

按名称对文件排序。

暂无
暂无

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

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