DependSet

管理資源之間任意相依性的任務。

說明

dependset 任務會比較一組來源與一組目標檔案。如果任何來源最近修改的時間比任何目標檔案都新,則會移除所有目標檔案。

來源和目標檔案透過巢狀的 資源集合 指定;來源可以是任何類型的資源,而目標則僅限於檔案。至少需要一組來源和一組目標。

當您想要使用萬用字元包含或排除模式,且不關心遺失的檔案時,請使用 FileSet。當您想要將不存在的檔案視為過期時,請使用 FileList。如果任何來源或目標 FileList 中有任何不存在的檔案,則會移除所有目標檔案。

DependSet 可用於擷取無法或無法透過演算法判斷的相依性。例如,<style> 任務只會比較來源 XML 檔案和 XSLT 樣式表與目標檔案,以判斷是否要重新設定來源樣式。使用 dependset 可以將此相依性檢查擴充到包括 DTD 或 XSD 檔案,以及主樣式表匯入的其他樣式表。

參數

屬性 說明 必要
verbose 使任務列出所有已刪除的目標檔案,以及刪除原因。

指定為巢狀元素的參數

sources

<sources> 元素是 Union,其中可以巢狀任意資源集合。自 Apache Ant 1.7 起

srcfileset

巢狀的 <srcfileset> 元素指定 FileSet。此檔案集中包含的所有檔案都將與包含在所有 <targetfileset> 檔案集和 <targetfilelist> 檔案清單中的所有檔案進行比較。可以指定多個 <srcfileset> 檔案集。

srcfilelist

巢狀的 <srcfilelist> 元素指定 FileList。此檔案清單中包含的所有檔案都將與包含在所有 <targetfileset> 檔案集和 <targetfilelist> 檔案清單中的所有檔案進行比較。可以指定多個 <srcfilelist> 檔案清單。

targets

自 Ant 1.7 起

<targets> 元素是 Path,因此可以包含任何基於檔案系統的資源。

targetfileset

巢狀的 <targetfileset> 元素指定 FileSet。此檔案集中包含的所有檔案都將與包含在所有 <srcfileset> 檔案集和 <sourcefilelist> 檔案清單中的所有檔案進行比較,如果任何檔案較舊,則會將其全部刪除。可以指定多個 <targetfileset> 檔案集。

targetfilelist

巢狀的 <targetfilelist> 元素指定 FileList。此檔案清單中包含的所有檔案都將與包含在所有 <srcfileset> 檔案集和 <sourcefilelist> 檔案清單中的所有檔案進行比較,如果任何檔案較舊,則會將其全部刪除。可以指定多個 <targetfilelist> 檔案清單。

範例

如果下列檔案比它們的來源 XML 檔案的 DTD、

  1. 一個共用的 DTD(由主 DTD 匯入)、
  2. 一個從屬的 XSLT 樣式表(由主樣式表匯入)、或
  3. 建置檔案
  4. 過時,則移除 ${output.dir} 目錄中的衍生 HTML 檔案。
<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>

如果上述範例中的任何來源不存在,則所有目標檔案也會被移除。若要忽略遺失的來源,請使用檔案集而非檔案清單作為來源。