ant – uptodate任务:仅重新生成过时的文件
我是ant的新手,而且习惯于Makefiles。 在一个项目中,名为Message_zh.class等的i18n语言模块是在每次编译时无条件地从zh.po等构建的,尽管它们已经存在,这浪费了很多时间。 我认为这些是build.xml的相关部分:
目标构建语言类依赖于编译目标,因此,每次编译时,整个字符串都会再次被msgfmted。 如果1. po文件被更改,或者2.类文件不存在,应如何编写以调用msgfmt? 如果没有进一步的软件,我会很高兴。 你能帮我指点一个例子吗?
第一次尝试解决方案对ant的行为没有区别:
这有什么不对?
问题是您在运行i18n.uptodate
任务之前正在测试属性i18n.uptodate
。 在输入build-languageclasses
目标之前,必须运行条件块。
你应该重新组织你的代码:
- 删除主目标上的
unless="i18n.uptodate"
- 将
build-languageclasses
拆分为2个目标。 - 第一个用于初始化条件,仅包含
块。 - 第二个包含生成文件的代码(
)
第二个目标配置为根据第一个目标设置的属性i18n.uptodate
有条件地运行。
编辑 – 这是uptodate任务的一个工作示例
we have something to do!
HIH M.
尝试使用ant-contrib – OutOfDate – 如果你想在第一个邮件中的第二个源中的结构http://ant-contrib.sourceforge.net/tasks/tasks/outofdate.html