我想创建一个ant依赖项,目标文件依赖于源文件。你怎么用蚂蚁来描述这个?
例如,将此Make目标转换为ant
data.txt: header1.txt body.txt footer.txt
cat header1.txt body.txt footer.txt > data.txt
答案 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任务调用。