在ANT中获得真正“文件任务”的最简单方法

时间:2009-10-26 02:37:49

标签: file ant rake task

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

http://martinfowler.com/articles/rake.html#FileTasks

“对于一个文件,你指的是实际文件而不是任务名称。所以'build / dev / rake.html'和'dev / rake.xml'是实际文件.html文件是这个任务的输出, xml文件是输入。您可以将文件任务视为告诉构建系统如何制作输出文件 - 事实上这正是make中的概念 - 您列出了您想要的输出文件并告诉如何制作它们。

文件任务的一个重要部分是它不会运行,除非你需要运行它。构建系统查看文件,只有在输出文件不存在或者修改日期早于输入文件时才运行任务。因此,当您逐个文件地考虑事物时,文件任务非常有效。“

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

理想的解决方案也不是一件好事,而是可以轻松应用于任何目标 - 也许使用一些ANT JavaScript或自定义任务?

1 个答案:

答案 0 :(得分:1)

使用ant-contrib outofdate task。它具有您要求的属性。这是ant-contrib website

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

<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>