2010-09-26 28 views
6

我在ANT中有一個目標,需要在給定的一組文件上運行兩次編譯器:一次用於調試,一次用於生產。如果源文件已更改,我只想運行編譯器,因此我設置了<modified>選擇器。但是,由於我需要debug和prod任務來運行給定的修改文件,因此我在第一次運行時將update屬性設置爲false。我有一些沿線:使Ant <modified>選擇器正常工作

<!-- 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>

+0

這將是一個更好的做一個編譯macrodef,然後傳遞不同的參數來調試和prod而不是重複。 – thekbb 2013-11-27 21:10:32

回答