我还在学习如何使用ANT,我想了解是否有合理的方法在其中执行文件任务,类似于Rake和Make:
http://martinfowler.com/articles/rake.html#FileTasks
“对于一个文件,你指的是实际文件而不是任务名称。所以'build / dev / rake.html'和'dev / rake.xml'是实际文件.html文件是这个任务的输出, xml文件是输入。您可以将文件任务视为告诉构建系统如何制作输出文件 - 事实上这正是make中的概念 - 您列出了您想要的输出文件并告诉如何制作它们。
文件任务的一个重要部分是它不会运行,除非你需要运行它。构建系统查看文件,只有在输出文件不存在或者修改日期早于输入文件时才运行任务。因此,当您逐个文件地考虑事物时,文件任务非常有效。“
换句话说,假设我想运行自定义二进制文件,我只希望在任何文件发生变化时运行二进制文件。这与this问题有关,但我根本不想运行二进制文件,不仅传递文件集的一部分(即文件集中只有一个,我不希望该工具一直跑。)
理想的解决方案也不是一件好事,而是可以轻松应用于任何目标 - 也许使用一些ANT JavaScript或自定义任务?
答案 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>