Ant是否支持基于文件的依赖关系?

时间:2010-11-09 02:13:06

标签: java ant

我想创建一个ant依赖项,目标文件依赖于源文件。你怎么用蚂蚁来描述这个?

例如,将此Make目标转换为ant

data.txt: header1.txt body.txt footer.txt
      cat header1.txt body.txt footer.txt > data.txt

3 个答案:

答案 0 :(得分:1)

你可能会做这样的事情,但它开始听起来像脚本。 Ant不是脚本语言。如果你有很多“if / then / else”逻辑,你可能做错了。

请描述“其他数据”。我们在谈论复制文件吗?这是devl / test / prod环境问题吗?在这种情况下,您当然可以传入一个指定环境名称的参数,并使用条件测试来决定要复制的集合。阅读this以了解具体方法。

答案 1 :(得分:1)

如果您只想将一个目录中的文件与源树相关联,那么 您可以使用sync任务。以下是文档的基本示例:

<sync todir="site">
  <fileset dir="generated-site"/>
</sync>
  

覆盖 site 中的所有文件   来自生成网站的较新文件,   删除 site 中没有的文件   存在于生成的网站。

如果您需要确定哪些资源需要更新, 为了执行比同步更复杂的操作, 您可以使用ant-contrib outofdate任务。例如

<outofdate property="compile.needed" outputsourcespath="sources.for.recompile">
    <sourcefiles>
        <fileset dir="${src}" includes="*.c"/>
    </sourcefiles>
    <mapper type="glob" dir="${src}" from="*.c" to="${obj}/*.o"/>
</outofdate>
如果任何目标文件与源相比过时,

会将compile.needed设置为true, 并且还将路径sources.for.recompile设置为仅包含需要重新编译的源的列表 - 然后你可以编译那些来源。

(这里的假设是构建输出区域中的单个文件与一个源直接相关。)

答案 2 :(得分:0)

我现在的简单解决方案是在我的shell脚本中手动添加源/目录文件时代的测试,该脚本从ant中的exec任务调用。