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