DependSet

用于管理资源之间任意依赖关系的任务。

描述

dependset 任务比较一组源文件和一组目标文件。如果任何源文件比任何目标文件修改得更晚,则所有目标文件都将被删除。

源文件和目标文件通过嵌套的 资源集合 指定;源文件可以是任何类型的资源,而目标文件仅限于文件。至少需要一组源文件和一组目标文件。

当您想使用通配符包含或排除模式并且不关心丢失的文件时,请使用 FileSet。当您想将文件的缺失视为已过期时,请使用 FileList。如果任何源或目标 FileList 中存在任何不存在的文件,则所有目标文件都将被删除。

DependSet 用于捕获无法或不能通过算法确定的依赖关系。例如,<style> 任务仅比较源 XML 文件和 XSLT 样式表与目标文件,以确定是否需要重新样式化源文件。使用 dependset,您可以将此依赖关系检查扩展到包括 DTD 或 XSD 文件以及主样式表导入的其他样式表。

参数

属性 描述 必需
verbose 使任务列出所有已删除的目标文件以及删除它们的原因。

作为嵌套元素指定的参数

sources

<sources> 元素是一个 Union,可以将任意资源集合嵌套到其中。自 Apache Ant 1.7 起

srcfileset

嵌套的 <srcfileset> 元素指定一个 FileSet。此 fileset 中包含的所有文件将与所有 <targetfileset> fileset 和 <targetfilelist> filelist 中包含的所有文件进行比较。可以指定多个 <srcfileset> fileset。

srcfilelist

嵌套的 <srcfilelist> 元素指定一个 FileList。此 filelist 中包含的所有文件将与所有 <targetfileset> fileset 和 <targetfilelist> filelist 中包含的所有文件进行比较。可以指定多个 <srcfilelist> filelist。

targets

自 Ant 1.7 起

<targets> 元素是一个 Path,因此可以包含任何基于文件系统的资源。

targetfileset

嵌套的 <targetfileset> 元素指定一个 FileSet。此 fileset 中包含的所有文件将与所有 <srcfileset> fileset 和 <sourcefilelist> filelist 中包含的所有文件进行比较,如果任何文件较旧,则全部删除。可以指定多个 <targetfileset> fileset。

targetfilelist

嵌套的 <targetfilelist> 元素指定一个 FileList。此 filelist 中包含的所有文件将与所有 <srcfileset> fileset 和 <sourcefilelist> filelist 中包含的所有文件进行比较,如果任何文件较旧,则全部删除。可以指定多个 <targetfilelist> filelist。

示例

如果 ${output.dir} 目录中的派生 HTML 文件相对于

  1. 其源 XML 文件的 DTD 过期
  2. 一个公共 DTD(由主 DTD 导入)
  3. 一个从属 XSLT 样式表(由主样式表导入),或
  4. 构建文件
<dependset>
  <srcfilelist
      dir   = "${dtd.dir}"
      files = "paper.dtd,common.dtd"/>
  <srcfilelist
      dir   = "${xsl.dir}"
      files = "common.xsl"/>
  <srcfilelist
      dir   = "${basedir}"
      files = "build.xml"/>
  <targetfileset
      dir      = "${output.dir}"
      includes = "**/*.html"/>
</dependset>

如果上述示例中的任何源文件不存在,则所有目标文件也将被删除。要忽略丢失的源文件,请对源文件使用 fileset 而不是 filelist。