让Ant <modified>选择器正常工作</modified>

时间:2010-09-26 00:32:20

标签: ant

我在ANT中有一个目标需要在给定的文件集上运行两次编译器:一次用于调试,一次用于生产。我只想在源文件发生变化时运行编译器,因此我设置了<modified>选择器。但是,由于我需要为给定的修改文件运行debug和prod任务,所以我在第一次运行时将update属性设置为false。我有类似的东西:

<!-- Do the debug build -->
<apply executable="compiler">
    <fileset dir="${js.src.dir}" includes="*.js">
        <!-- don't update the cache so the prod build below works -->
        <modified update="false" 
            seldirs="true"
            cache="propertyfile"
            algorithm="digest"
            comparator="equal">
          <param name="cache.cachefile" value="cache.properties"/>
          <param name="algorithm.algorithm" value="md5"/>
        </modified>
    </fileset>
    <args for debug build/>
</apply>
<!-- Do the production build -->
<apply executable="compiler">
    <fileset dir="${js.src.dir}" includes="*.js">
        <modified update="true" 
            seldirs="true"
            cache="propertyfile"
            algorithm="digest"
            comparator="equal">
          <param name="cache.cachefile" value="cache.properties"/>
          <param name="algorithm.algorithm" value="md5"/>
        </modified>
    </fileset>
    <args for prod build/>
</apply>

然而这不起作用。我对编译器的第一次调用最终会更新缓存,第二次调用将被跳过。我在这里缺少什么?

更新:我通过使用<depend>选择器解决了这个问题,但仍然很好奇如何使用<modified>

完成相同操作

1 个答案:

答案 0 :(得分:2)

更新被打破,直到显然是1.8.0:

https://issues.apache.org/bugzilla/show_bug.cgi?id=32597

只花了大约5年的时间来修复!