2013-01-24 26 views
2

我試圖通過使用ANT <updtodate/>任務來檢查更改並僅在必要時進行編譯,以加快構建速度。這是一個Flex項目。這裏是我的build.xml的相關部分:Ant uptodate任務不考慮刪除的文件

<target name="framework-clean" 
      description="Clean the Framework library"> 
    <echo>Clean: Deleting dist directory in framework</echo>   
    <delete dir="${flex.framework.dir}/dist"/> 
    </target> 

    <target name="check-framework-changes">  
     <uptodate property="framework-no-changes" targetfile="${flex.framework.dir}/dist/imanager-framework.swc"> 
     <srcfiles dir="${flex.framework.dir}/src" /> 
     <srcfiles dir="${flex.framework.dir}/libs" />   
     </uptodate>    
    </target> 

    <target name="framework-compile"    
      depends="check-framework-changes" 
      unless="framework-no-changes" 
      description="Compile the Framework library">   
    <mkdir dir="${flex.framework.dir}/dist"/> 
    <echo>Compile: Compiling iManager Framework</echo> 
    <compc output="${flex.framework.dir}/dist/imanager-framework.swc" 
     debug="${debug}" 
     incremental="${incremental}">    
     <keep-as3-metadata name="Master"/> 
     <keep-as3-metadata name="Component"/> 
     <keep-as3-metadata name="Key"/> 
     <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 
     <source-path path-element="${flex.framework.dir}/src" /> 
     <library-path dir="${flex.framework.dir}/libs" includes="*.swc" append="true"/> 
     <include-sources dir="${flex.framework.dir}/src" includes="*" />   
    </compc> 
    </target> 

問題:

假設我添加一個名爲Foo.as文件在我的項目,該腳本將檢測到的變化和重新編譯SWC。但是如果我在不更改任何其他文件的情況下刪除此Foo.as,則該腳本不會編譯該項目。即使Foo父文件夾的上次修改時間戳已更新,該更改也會被忽略。

有什麼辦法解決這個問題嗎?

我ANT的版本是1.8.4,我使用Flex SDK 4.6

回答

0

我修改了check-framework-changes目標包括與文件一起目錄。

<target name="check-framework-changes">  
     <uptodate property="framework-no-changes" targetfile="${flex.framework.dir}/dist/imanager-framework.swc"> 
     <srcresources> 
      <fileset dir="${flex.framework.dir}/src" /> 
      <fileset dir="${flex.framework.dir}/libs" /> 
      <dirset dir="${flex.framework.dir}/src" /> 
      <dirset dir="${flex.framework.dir}/libs" /> 
     </srcresources>     
     </uptodate>    
    </target> 

這已經解決了這個問題