File 最简单的方法是拥有一个真正的;“文件任务”;蚂蚁

File 最简单的方法是拥有一个真正的;“文件任务”;蚂蚁,file,ant,rake,task,File,Ant,Rake,Task,我仍在学习如何很好地使用ANT,我想了解是否有一些合理的方法在其中执行文件任务,类似于Rake和Make: “对于文件,您指的是实际文件,而不是任务名称。因此,“build/dev/rake.html”和“dev/rake.xml”是实际的文件。html文件是此任务的输出,xml文件是输入。您可以将文件任务视为告诉构建系统如何生成输出文件——事实上,这正是make中的概念——列出所需的输出文件并告诉make如何生成它们 文件任务的一个重要部分是,除非您需要运行它,否则它不会运行。生成系统查看这

我仍在学习如何很好地使用ANT,我想了解是否有一些合理的方法在其中执行文件任务,类似于Rake和Make:

“对于文件,您指的是实际文件,而不是任务名称。因此,“build/dev/rake.html”和“dev/rake.xml”是实际的文件。html文件是此任务的输出,xml文件是输入。您可以将文件任务视为告诉构建系统如何生成输出文件——事实上,这正是make中的概念——列出所需的输出文件并告诉make如何生成它们

文件任务的一个重要部分是,除非您需要运行它,否则它不会运行。生成系统查看这些文件,仅当输出文件不存在或其修改日期早于输入文件时才运行任务。因此,当您在逐个文件的基础上思考问题时,文件任务非常有效。”

换句话说,假设我想运行一个自定义二进制文件,我只想在任何文件发生更改时运行该二进制文件。这与问题有关,但我根本不想运行二进制文件,不仅要传递文件集的一部分(即,文件集中只有一个文件,我根本不想运行该工具)

理想的解决方案也不是一个冗长的东西,而是可以很容易地应用于任何目标——可能使用一些ANT JavaScript或自定义任务?

使用。它完全具有您所要求的属性。下面是

以下是关于如何将其集成到构建中的模板:

<taskdef
  resource="net/sf/antcontrib/antlib.xml"
>
  <classpath>
    <pathelement location="${ant-contrib.jar}"/>
</taskdef>

<outofdate>
 <sourcefiles path="dev/rake.xml"/>
 <targetfiles path="build/dev/rake.html"/>
 <sequential>
   ... do your work here ...
   ... will only run if rake.html is older than rake.xml ...
 </sequential>
</outofdate>

…在这里做你的工作。。。
…仅当rake.html早于rake.xml时才会运行。。。