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